systemd优化shadowsocks, too many open files的处理
简介
标题好别扭,意思就是对于Ubuntu等采用systemd,将shadowsocks写成.service的,对于服务器端shadowsocks日志出现大量error: too many open files
的优化处理方法。
以下绝大多数内容照搬shadowsocks官方的[优化 Shadowsocks]
实际上这是一个以空间换时间的方法,即用更多的内存空间存储shadowsock的连接,来防止shadowsock由于内存等限制而造成error: too many open files
,所以小内存服务器请慎重。
优化Shadowsocks
新建local.conf
新建/etc/sysctl.d/local.conf
这个文件并添加下面的内容:
fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.netdev_max_backlog = 4096
net.core.somaxconn = 4096
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla
然后运行:
sysctl --system
修改shadowsocks.service
这里shadowsocks.service是我写的service的名字,注意替换成你自己的。
编辑shadowsocks.service
[Unit]
Description=shadowsocks server
After=network.target
[Service]
Type=forking
PIDFile=/run/shadowsocks.pid
PermissionsStartOnly=true
ExecStart=/usr/local/bin/ssserver --pid-file /run/shadowsocks.pid -c /etc/shadowsocks/config.json -d start
Restart=on-abort
[Install]
WantedBy=multi-user.target
这是我的修改之前的文件内容,可能会有些差别,但不要紧,能用就行
然后在ExecStart
上一行加入
ExecStartPre=/bin/sh -c 'ulimit -n 51200'
修改之后文件像这样:
[Unit]
Description=shadowsocks server
After=network.target
[Service]
Type=forking
PIDFile=/run/shadowsocks.pid
PermissionsStartOnly=true
ExecStartPre=/bin/sh -c 'ulimit -n 51200'
ExecStart=/usr/local/bin/ssserver --pid-file /run/shadowsocks.pid -c /etc/shadowsocks/config.json -d start
Restart=on-abort
[Install]
WantedBy=multi-user.target
注意:如果你的.service文件本身就有ExecStartPre
也没关系,再加一行ExecStartPre
就行了。
保存并重启shadowsocks
由于修改了.service文件,需要首先reload
一次再重启
sudo systemctl daemon-reload
sudo systemctl restart shadowsocks
还没有解决。。发现又出来了 博主可以留个联系方式吗。
博主 全部按照教程做的一遍。。服务端还是会出现一大堆Too many open files,reboot后也不行 挂上ss访问youtube等 提示终止了意外链接,该如何解决呢
你好,看到你已经发现我更新的一篇,应该已经解决问题了吧?