分析错误:socket accept failed too many open files

步骤:
1、--查看当前各个进程打开的文件句柄数,其结果的第一列表示句柄数,第二列表示进程号
lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more

2、--查看单个进程能够打开的最大文件句柄数量(socket连接也算在里面)
ulimit -n

3、对比1和2的结果,如果1接近或超过2了,需要将2的配置调大
ulimit -n <最大文件句柄数>

4、如果想知道打开的文件句柄数最多的进程是哪个应用程序,可以使用如下命令
ps -aef|grep <进程号>

5、如果句柄数调的非常大了,还是不行,可能需要看看/proc/sys/fs/file-max中的值,该值表示系统全局的可用句柄数,可修改
vim /proc/sys/fs/file-max

6、对于正在使用(分配出去)的所有的句柄数、未使用的所有的句柄数、可使用的最大的句柄数这3个值,可以通过以下只读文件查看
vim /proc/sys/fs/file-nr
提示:当分配出去的句柄数接近最大句柄数,而“未使用的句柄数”远大于零时,表明你遇到了一个“句柄”使用高峰,这意为着你不需要增加file-max的值。
原文如下:
When the allocated file handles come close to the maximum, but the number of unused file handles is significantly greater than 0,
you’ve encountered a peak in your usage of file handles and you don’t need to increase the maximum.

原文地址:https://www.cnblogs.com/anai/p/5889353.html