too many open files解决方法

解决一下linux系统同时打开过多文件的问题。

方法一:命令方式

1
2
3
4
# 这样就可以把当前用户的最大允许打开文件数量设置为2048了,但这种设置方法在重启后会还原为默认值。 
# ulimit -n命令非root用户只能设置到4096。
# 想要设置到8192需要sudo权限或者root用户。
ulimit -n 2048

方法二:修改配置文件

1
2
3
4
5
6
7
vim /etc/security/limits.conf  
#在最后加入
* soft nofile 4096
* hard nofile 4096

#或者只加入
* - nofile 8192

*代表所有用户,可根据需要设置某一用户

检查程序文件数

如果你对你的程序有一定的解的话,应该对程序打开文件数(链接数)上限有一定的估算,如果感觉数字异常,请使用第一步的lsof -p 进程id > openfiles.log命令,获得当前占用句柄的全部详情进行分析。