2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
2021-06-17 02:53:49 [alert] 13576#0: accept() failed (24: Too many open files)
根据错误日志的输出信息,我们可以看出:是打开的文件句柄数太多了,导致Nginx报错了!那我们该如何解决这个问题呢?
既然我们能够从Nginx的错误日志中基本能够确定导致问题的原因,那这到底是不是Nginx本身的问题呢?答案为:是,也不全是!
为啥呢?原因很简单:Nginx无法打开那么多的文件句柄,一方面是因为我没有配置Nginx能够打开的最大文件数;另一方面是因为CentOS 6.8操作系统本身对打开的最大文件句柄数有限制,我同样没有配置操作系统的最大文件句柄数。所以说,不全是Nginx的锅!在某种意义上说,我错怪Nginx了!
在CentOS 6.8服务器中,我们可以在命令行输入如下命令来查看服务器默认配置的最大文件句柄数。
[root@binghe150 ~]# ulimit -n
1024
可以看到,在CentOS 6.8服务器中,默认的最大文件句柄数为1024。
此时,当Nginx的连接数超过1024时,Nginx的错误日志中就会输出如下错误信息。
[alert] 13576#0: accept() failed (24: Too many open files)
那我们该如何解决这个问题呢?其实,也很简单,继续往下看!
使用如下命令可以把打开文件句柄数设置的足够大。
ulimit -n 655350
同时修改nginx.conf , 添加如下配置项。
worker_rlimit_nofile 655350;
注意:上述配置需要与error_log同级别。
这样就可以解决Nginx连接过多的问题,Nginx就可以支持高并发(这里需要配置Nginx)。
另外, ulimit -n
还会影响到MySQL的并发连接数。把它提高,也可以提高MySQL的并发。
注意: 用 ulimit -n 655350
修改只对当前的shell有效,退出后失效。
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-8DK9IXjx-1710779023089)]