统计
  • 文章总数:260 篇
  • 评论总数:0 条
  • 分类总数:14 个
  • 最后更新:昨天 17:55
原创套件教程

Transmission启动后错误Too many open files解决方法

本文阅读 2 分钟
首页 套件教程 正文

如果Transmission和qBittorrent启动后种子报错:Unable to save resume file: Too many open files

原因是linux系统的打开文件数量限制,比如群晖默认Hard Limit:4096、Soft Limit:1024

984150569.png

方法1、针对程序进程单独修改

任务计划(root),每次每次每次启动Transmission后执行一次。(qBittorrent进程名称:qbittorrent-nox)

如果是arm64,程序名称:rlimit-arm64,自行修改第一行的:http://code.imnks.com/rlimit/rlimit-arm64

#下载已编译好的rlimit
wget -O rlimit http://code.imnks.com/rlimit/rlimit
chmod +x rlimit
#上面两行第一次执行成功后删除,已经在本地了,多次下载会被服务器拉黑!
PID=`pidof transmission-daemon`
if [ "$PID" != "" ]
then
./rlimit $PID
fi

1508832873.png

rlimit源码和编译(仅供研究)

#include <stdio.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/types.h>
 
int main(int argc, char** argv) {
    pid_t pid;
    struct rlimit new_limit;
    int result;
    if (argc < 2) {
        return 1;
    }
    pid = atoi(argv[1]);
    new_limit.rlim_cur = 60000;
    new_limit.rlim_max = 60000;
    result = prlimit(pid, RLIMIT_NOFILE, &new_limit, NULL);
    return result;
}

编译过程:建议ubuntu18.04,或者使用群晖的工具链交叉编译,否则运行会libc.so.6报错。

apt install gcc gcc-aarch64-linux-gnu gcc-7-aarch64-linux-gnu
#编译x86_64
gcc -o rlimit rlimit.c
#编译arm64
aarch64-linux-gnu-gcc -o rlimit-arm64 rlimit.c

方法2、永久修改为群晖最大打开文件限制参数 4096

这会对系统的每个程序都有效,带来的后果未知。。。

ssh连接群晖执行一次即可,重启生效,查看效果:ulimit -n

#4096就是最大值!!!不要修改!!!
echo 'ulimit -n 4096' | tee -a /etc/profile
source /etc/profile

参考文章

https://tieba.baidu.com/p/7818416745
http://sword.studio/amp/233.html

修改系统监控文件数量限制

套件或者Docker如果无法启动,启动日志报错:inotify instance limit reached、inotify watch limit reached(意思系统监控文件数量受限),或者目录同步不明原因不会自动触发同步操作,需SSH连接群晖执行以下命令:(一次即可),执行完毕重启系统。

sudo echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo echo fs.inotify.max_user_instances=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
原创文章,作者:ERROR204,本文章内容未经书面许可禁止一切形式的转载:https://imnks.com/9169.html
群晖新套件:TTYD网页终端WebSSH 支持DSM6、7
« 上一篇 08-28
群晖新套件:Netbird 基于原生WireGuard虚拟组网 支持DSM7
下一篇 » 09-25