感谢星菊对这个问题提供的帮助
换用 libtorrent 1.1 以后,由于 arvidn 改善了 IO 线程的问题,因此总是出现 too many open files 错误,在多方询问以后,终于解决了这个问题。
如果去查这个问题,通常会建议修改 limits.conf,修改 ulimit -n 参数,在 sysctl.conf 中添加 fs.file-max 参数等等,然而都不能解决这个问题。
实际上,目前以 systemd 作为启动工具的发行版,都存在两套限制体系,一个是 limits.conf,负责限制命令行模式启动的程序,另一个是 /etc/systemd/system.conf,限制以 systemd service 方式启动的程序。因此如果要解决这个问题,需要所有的地方都进行修改。
在 /etc/systemd/system.conf 中,加上:
DefaultLimitNOFILE=999998 DefaultLimitNPROC=999998
在 /etc/sysctl.conf 中,加上:
fs.file-max = 2097152 fs.nr_open = 2097152
在 /etc/security/limits.conf 中,加上:
* hard nofile 999999 * soft nofile 999999 root hard nofile 999999 root soft nofile 999999
然后就可以解决问题了。
Pingback引用通告: 关于公网分流任务使用 qBittorrent + libtorrent 内存泄漏的一些想法 | GLORIOUS DAYS