马春杰杰 Exit Reader Mode

Transmission报错:Too many open files (24)

最近,群晖的套件版Transmission下载文件时报错:Too many open files (24),探查原因之后,发现是系统ulimit的问题,群晖的默认值是1024,我这边尝试了各种方法修改,包括但不限于:

  1. 修改/etc/profile
  2. 修改/root/.profile
  3. 修改/var/packages/transmission/scripts/start-stop-status文件,这是TR的启动、停止代码,仍然不行,因为sc-transmission用户没有执行权限
  4. 修改/volume1/@appdata/transmission/settings.json文件,增加"open-file-limit": 65535,仍然无效
  5. 修改sudo systemctl edit pkgctl-transmission.service,还是不行
  6. ……

以上很多操作都试过了,基本上不太可行,可以通过这个命令来查看是否修改成功:

cat /proc/$(pidof transmission-daemon)/limits | grep "Max open files"

这是查看Transmission可用的线程数,一般会显示:

Max open files 1024 4096 files

我们的目标是把这两个值改大点,目前我尝试过的唯一可行的方法就是直接修改Transmission进程,方法如下:

安装prlimit

synopkg start transmission
wget -O – http://bin.entware.net/x64-k3.2/installer/generic.sh | sh
/opt/bin/opkg update
/opt/bin/opkg install prlimit

修改Transmission进程:

for p in $(ps -eo pid,user | awk '$2=="sc-transmission" {print $1}'); do
  /opt/bin/prlimit --pid "$p" --nofile=65535:65535
done

之后再查看,就会发现成功改好了:

之后每次启动Transmission之后,都要手动修改下修改Transmission进程,倒也不是啥大问题,当然,你也可以设置个脚本,监测Transmission进程~