Skip to main content

accept4() failed (23: Too many open files in system)

今天早上9.40多分钟的时候,又出现这个问题,网上找资料,有一个命令可以查询系统文件打开数量的限制(硬限制):

cat /proc/sys/fs/file-max

使用了这个命令查看,发现限制只有200000

难怪每次使用(sudo find /proc -print | grep -P '/proc/\d+/fd/'| wc -l)这个命令查看已打开文件数的时候,一到20万左右就网站打不开

然后就开始询问阿里云的工作人员,结果如下:



1、用户级别

查看Linux系统用户最大打开文件限制:

ulimit -n

显示默认1024


修改limits.conf

vim /etc/security/limits.conf

添加或修改:

* soft nofile 10000000

* hard nofile 10000000


2、Linux系统级别

查看Linux系统对同时打开文件数的硬限制:

sysctl -a | grep file-max


fs.file-max = xxxxxx


修改sysctl.conf


vim /etc/sysctl.conf

增加:

fs.file-max = 10000000

使sysctl配置立即生效:

sysctl -p


1.用户级别是通过修改配置文件来限制用户的最大文件

系统级别是修改这个文件,系统只允许这么多文件


2.硬限制是指系统允许的最大同时打开文件数

软限制是指由进程自己设置的同时打开文件数的最大值。当进程达到软限制时,系统会向进程发送警告信息,但仍然允许进程打开更多的文件直到达到系统的硬限制。


3.修改软限制需要重启,建议操作前快照备份


4、如果硬限制是10万,软限制是100万,以哪个为准?

以硬限制为准