最近,老有人向我反馈,shadowsocks连接不上,我ssh登陆一查日志,全是 Too many open files 报错。
我首先想到的是ulimit最大连接数,不过,我以前就已经设置成了51200啊,难道还不够用?
ulimit -a 查看一下
core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 193064 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 51200 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
命令的结果也是51200,难道没有生效?
编辑 /etc/security/limits.conf 加入两行
* soft nofile 51200 * hard nofile 51200
保存,重启还是没有生效,虽然ulimit -a 显示 51200
可以用这个命令查看
cat /proc/`pgrep python | head -1`/limits | grep 'open files' Max open files 1024 4096 files
果不其然,还是默认的1024。
怎么办?我水平也很菜,既然能翻了,就去谷歌吧。
找到一篇日本人写得文章:http://d.hatena.ne.jp/akishin999/20130213/1360711554
方法是这样
vim /etc/initscript 加入以下内容
ulimit -n 51200 eval exec "$4"
重启,看结果,还是不行。
再试试第二个方法
vim /etc/sysconfig/init 追加以下内容
ulimit -n 51200
重启看结果,已经可以了。