Nginx: Too Many Open Files 错误和解决方案

Nginx 的服务器使用越来越普遍,主要因为他的性能大大优于Apache2。但在使用过程中往往遇到一些问题,下面这个就是其中之一:

24: Too many open files

详细错误代码如下:

2011/05/01 23:00:49 [alert] 7387#0: *6259768 socket() failed (24: Too many open files) while connecting to upstream


次错误容易让人摸不着头绪,不知道是哪里出了问题,配置检查过没问题。程序代码的错误也不应该是这个错误信息啊。
其原因是Linux / Unix 设置了软硬文件句柄和打开文件的数目,解决方法如下:
简单修改方法:
使用如下命令可以把打开文件数设置足够大

ulimit -n 30000

同时修改nginx.conf添加

worker_rlimit_nofile 30000;

这样就可以解决Nginx连接过多的问题,Nginx就可以支持高并发。
注意: 用ulimit -n 30000 修改只对当前的shell有效,退出后失效。

感觉还是通过下面的房改修改比较稳定
一、通过修改硬件配置来实现更改
你可以使用’ulimit’命令来查看系统文件限制。

ulimit -Hn
ulimit -Sn

在nginx服务器可以打开的文件数量受你操作系统的限制,编辑/etc/sysctl.conf 添加如下内容:

fs.file-max = 70000

保存退出,从新读取系统配置

sysctl -p

再编辑 /etc/security/limits.conf 添加内容:

* soft nofile 10000
* hard nofile 30000

此修改内容需要reboot系统才能生效,所以务必从新启动下服务器。
二、修改Nginx系统的文件限制,使用nginx worker_rlimit_nofile Option
打开你相应的配置文件位置,我用的ubutnu12.04 所以路径如下

vim /etc/nginx/nginx.conf

添加内容

# set open fd limit to 30000
 worker_rlimit_nofile 30000;

保存退出从新读取nginx配置

sudo service nginx reload

再次查看系统输出

ulimit -Hn
ulimit -Sn

结果如下:

30000
10000
posted @ 2016-11-25 15:28  helpwz  阅读(2503)  评论(0编辑  收藏  举报