这里讨论的是redhat。linux是有文件句柄限制的,默认是1024,作为一台生产服务器,在linux下面部署应用的时候,很容易达到这个数量的限制,然后报错 error: too many open files ,所以应当把这个值改大一些,在高负载情况下要设置为更高,但最高只能为65535。有人说这里默认的1024是系统的限制,也有人说是用户的限制,其实这个是用户的限制,严格的说这是当前用户准备要运行的程序的限制。
使用ulimit -a可以查看当前系统的所有限制值,使用ulimit -n可以查看当前的最大打开文件数。
有3种方法可以更改默认最大打开文件数(1024):
1.在终端直接输入ulimit -SHn 65535可以更改,但这种方式重启机器后更改值会失效,重新回到1024;
2.编辑/etc/profile,在文件最后增加 ulimit -SHn 65535,重启系统,更改成功;
3.编辑/etc/security/limits.conf,在文件最后增加以下两行记录:
* soft nofile 65535
* hard nofile 65535
保存并重启系统,更改成功!
也可以在/etc/security/limits.conf文件最后增加以下四行记录:
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
保存文件并重启机器即可。其中,*代表针对所有用户,nproc代表最大进程数,nofile代表最大文件打开数。
上面的3种方法,最好的是方法3 。也有人说可以修改文件/etc/rc.local,在其最后增加一行ulimit -SHn 65535,经过验证这是错的,至少在redhat中行不通。
本文出自 “个人感受” 博客,谢绝转载!
原文地址:http://4593973.blog.51cto.com/4583973/1433406