linux 系统中,当运行的进程打开了过多是文件,超出了系统默认的最大打开文件数的限制的时候,就会出现Too many open files的错误,这时候,不用紧张,只要把系统的配置修改一下就ok了。
操作如下:
1.打开配置文件:
vim /etc/security/limits.d/20-nproc.conf (Ctentos 6.5 是 90-nproc.conf)
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 4096
root soft nproc unlimited
2.打开配置文件:
vim /etc/security/limits.conf
- #* soft core 0
- #* hard rss 10000
- #@student hard nproc 20
- #@faculty soft nproc 20
- #@faculty hard nproc 50
- #ftp hard nproc 0
- #@student - maxlogins 4
- * - nproc 102400
- * - nofile 102400
最后的“102400”是修改最大打开文件数的限制数值。这个自己看着需要填写吧。不过设置为“102400”之后,就自己而言,很多情况都不会再出现Too many open files的错误了。这个可以纳为装完系统之后的系统优化之一吧。
3. 使用命令 cat /proc/sys/fs/file-max
echo 8061540 > /proc/sys/fs/file-max 65536, 这个时候知道为啥出现偶发的异常了,当前系统使用的文件数和最大数相隔很近
直接增大一倍,这样可以马上生效,但是如果操作系统重启,又会失效
如果需要永久生效,修改/etc/sysctl.conf文件,后面加上fs.file-max = 131072,执行sysctl -p生效
所以当系统中出现too many open files时候有2个地方都需要看
(此处的数据按照您实际需要调节)
此法解决的实际问题是:在高负载下squid,mysql 会发生 打开的文件数超过系统的进程限制,造成系统瓶颈。