群晖系统跟所有linux系统一样,有ulimit的限制,可以在群晖的ssh终端中敲入ulimit -n
,看到只有1024,这显然不够PT爱好者折腾的;
在网络上查了一圈资料,发现根本无解,群晖没有limits.conf配置文件,也不会从这边加载,也没有pam相关的so动态库;
尝试过在/etc/profile
中键入 ulimit -n 65535
,只适用于root用户,对普通登录用户依然是1024,群晖官方给出的答复是最大只能4096,所以如果保种不多的话,就采用这个方案吧,比较简单,以下是简单的命令:
vi /etc/profile
#最后一行加入
ulimit -n 4096
#配置生效,执行
source /etc/profile
但这个数量如果对保种,或者同时下载量过大的朋友完全不够用,下面还有一个变态的方法,就是用C程序动态的去更改进程的最大文件和socket数量,喜欢折腾朋友可以编译以下C程序:
#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;
}
群晖不自带GCC编译器,需要自己折腾,比较麻烦,我这边已经编译好了相关的二进制程序,大家拿去可以直接用,使用方法如下:
进入nas的ssh终端,随便什么目录均可;
下载我编译好的程序,wget https://www.mopsky.com/rlimit
;
备用下载地址:
rlimit.rar
OneDrive网盘下载地址:http://piaoyun.online/s/软路由NAS/黑群晖(synology)/rlimit
更改rlimit程序的权限,chmod 777 rlimit
;
查找transmission的进程编号,ps -ef|grep trans
,可以看到前面的数字即为进程编号;
使用rlimit工具对进程进行更改:./rlimit 进程编号
;
查看是否生效,cat /proc/您的进程编号/limits
文件,可以看到file相关的都变成了60000,至此大功告成。
相关阅读:
群晖transmission too many open files 解决方案
https://www.mopsky.com/2019/04/16/%E7%BE%A4%E6%99%96transmission-too-many-open-files-%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/