最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx中提示Too Many Open Files 错误解决办法
时间:2022-06-30 18:53:07 编辑:袖梨 来源:一聚教程网
做了点实验看了些源码,印证了自己的猜想。
对于get方法,send header+output_filter 就可以结束一次请求,因为GET方法是同步的,nginx会在handler返回之后的步骤中关闭链接,但对于post方法,由于nginx是使用异步的方式处理post数据,因此必须显式的关闭链接。
nginx的content handler同步返回后会调用ngx_http_finalize_request,在这个函数里,如果handler返回值为ngx_done则会直接ngx_http_finalize_connection,但后者并非如其名字那样结束一个连接,如果开启了keepalive,那么这个函数结束的是这次请求,而并非关闭连接。何时启用keepalive由客户端决定,如果客户端的版本大于1.0或者在header中指定只用keepalive,则r的keepalive标记位置为1,表明启用keepalive,如果nginx也开启了keepalive支持,则在此次请求结束后,客户端未关闭连接的情况下,此连接依然存在。
对于异步调用的post方法而言,post_handler是实际生成并返回http content的最后一步,如果返回码不是属于NGX_HTTP_SPECIAL_RESPONSE,那么,finalize_request的责任在posthandler自身,nginx不会在post_handler之后调用ngx_http_finalize_request结束请求关闭连接,所以如果你的content handler在post方法中处理请求,那么一定要记得ngx_http_finalize_request,否则,就会出现 accept too man open files。
好了讲了一堆道理如果你看不到没关系直接过滤上面,看下面设置办法
下面这个就是其中之一:
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 |
在nginx服务器可以打开的文件数量受你操作系统的限制,编辑/etc/sysctl.conf 添加如下内容:
代码如下 | 复制代码 |
fs.file-max = 70000 |
保存退出,从新读取系统配置
代码如下 | 复制代码 |
sysctl -p |
再编辑 /etc/security/limits.conf
添加内容:
代码如下 | 复制代码 |
* soft nofile 10000 |
此修改内容需要reboot系统才能生效,所以务必从新启动下服务器。
二、修改Nginx系统的文件限制,使用nginx worker_rlimit_nofile Option
打开你相应的配置文件位置,我用的ubutnu12.04 所以路径如下
代码如下 | 复制代码 |
vim /etc/nginx/nginx.conf |
添加内容
代码如下 | 复制代码 |
# set open fd limit to 30000 |
保存退出从新读取nginx配置
代码如下 | 复制代码 |
sudo service nginx reload |
再次查看系统输出
ulimit -Hn
ulimit -Sn
结果如下:
30000
10000
到此结束。希望对大家有用.
相关文章
- 《绝区零》伊芙琳培养材料汇总 01-24
- 《无限暖暖》1.2春节兑换码一览 01-24
- 《网上国网》查询阶梯档位方法 01-24
- 《蛋仔派对》神游贺岁盲盒获取方法 01-24
- 《炉石传说》星际联动盗贼卡组玩法介绍 01-24
- 皮革珊瑚属于珊瑚中的 01-24