http://freewind.me/blog/20110922/351.html
通过ulimit -n
可以看到linux”最大打开文件数量”的默认值是1024
。对于一些程序,如web服务,太小不够用。由于建立SOCKET会占用一个系统句柄,效果类似于打开了一个文件。LINUX默认的最大文件打开个数是1024(可能不同内核版本不一样),所以如果并发太多连接时就会报错。
可通过下面几个步骤修改:
-
vi /etc/pam.d/login
添加:
session required /lib/security/pam_limits.so
注意看这个文件的注释
-
vi /etc/security/limits.conf
在最后添加:
* - nofile 819200 * - nproc 819200
*
表示所有用户,如果想仅设置某一个用户,则换成其登录名,如www
。设置的数值与硬件配置有关,别设置太大了。
-
vi /etc/sysctl.conf
在最后添加:
fs.file-max = 819200
然后启用:
sysctl -p
-
查看
ulimit -a
,注意其中的-n
那一行设置:
ulimit -n 819200
-
echo 819200 > /proc/sys/fs/file-max
查看:
cat /proc/sys/fs/file-max