nginx运行中出现大量的Too many open files异常
2020-07-14 05:42
459 查看
现象描述:
通过nginx代理的请求返回/50X.html页面,通过查看nginx日志(/usr/local/nginx/log/error.log),发现大量Too many open files异常,
2020/04/30 10:15:42 [alert] 2794#0: *188092 socket() failed (24: Too many open files) while connecting to upstream, client: 118.114.245.36, server: intest.pzhsteelmobile.cn, request: "GET / HTTP/1.1", ups tream: "http://10.*.*.*:16024/", host: "intest.....cn" 2020/04/30 10:15:42 [crit] 2794#0: *188092 open() "/usr/local/nginx/html/50x.html" failed (24: Too many open files), client: 118.114.245.36, server: intest.....cn, request: "GET / HTTP/1.1", up stream: "http://10.*.*.*:16024/", host: "intest.....cn" 2020/04/30 10:15:42 [alert] 2794#0: *188229 socket() failed (24: Too many open files) while connecting to upstream, client: 118.114.245.36, server: intest.....cn, request: "GET / HTTP/1.1", ups tream: "http://10.*.*.*:16024/", host: "intest.....cn" 2020/04/30 10:15:42 [crit] 2794#0: *188229 open() "/usr/local/nginx/html/50x.html" failed (24: Too many open files), client: 118.114.245.36, server: intest.....cn, request: "GET / HTTP/1.1", up stream: "http://10.*.*.*:16024/", host: "intest.pzhsteelmobile.cn" 2020/04/30 10:15:43 [alert] 2794#0: *188635 socket() failed (24: Too many open files) while connecting to upstream, client: 118.114.245.36, server: intest.....cn, request: "GET / HTTP/1.1", ups tream: "http://10.*.*.*:16024/", host: "intest.....cn"
查看当前的端口占用情况:
[root@fxdl1 logs]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}' ESTABLISHED 1104 FIN_WAIT1 3 FIN_WAIT2 6 TIME_WAIT 42
发现端口占用数始终在一千左右徘徊,因此判断该异常是nginx并发数设置过小,当前的访问量耗尽允许使用的并发连接数.
处理方法
增加系统最大连接数,同时允许nginx使用更多的连接
此次修改将系统最大连接数设置为65535, nginx最大连接数设置为30000
处理步骤
- 增加系统文件打开数限制
# 所有用户软件最大文件数
* soft nofile 65535
# 所有用户硬件最大文件数
* hard nofile 65535 - 重启系统生效
- 增加nginx最大文件数限制
修改/usr/local/nginx/conf/nginx.conf文件,添加
worker_rlimit_nofile 30000; - /usr/local/nginx/sbin/nginx -s reload加载nginx配置
处理后压力测试
同时并发4000个http请求,查询后台建立连接数为3242,同时查看/usr/local/nginx/log/error.log,无新增异常
[root@fxdl1 logs]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}' LAST_ACK 161 SYN_RECV 255 ESTABLISHED 3242 FIN_WAIT2 43 CLOSING 15 TIME_WAIT 9584
相关文章推荐
- Golang http.DefaultClient 连接服务端压测时出现大量TIME_WAIT异常
- Android Studio 运行项目出现Information:Gradle tasks异常解决办法。
- maven 安装后,运行 mvn -v 出现异常
- maven命令运行时出现异常
- 修改桌面堆栈大小,解决运行大量程序时出现”Out of Memory”(内存不足)错误信息的问题
- QT 编译通过但是运行出现程序异常结束或者crashed的问题 在QT creator中最佳解决办法
- 运行laravel时 出现的异常及解决解决: cmd cd到根目录 前提安装了composer 输入:php artisan key:generate 将生成的key复制
- 在用c++读取xml文件时,运行时出现以下错误:出现未处理的“System.Xml.XmlException”类型的异常出现在 system.xml.dll 中
- VS2005 编译的exe运行出现 0x00905a4d 处未处理的异常: 0xC0000005: 读取位置 0x00905a4d时发生访问冲突
- 运行Struts项目时出现java.lang.reflect.InvocationTargetException异常解决办法
- 关于C++程序运行程序是出现的this application has requested the runtime to terminate it in an unusual way. 异常分析
- 在Android2.3上运行app时出现json解析异常,而在4.0则没有
- Eclipse 中 运行 J2me 程序出现ClassNotFound的异常
- 请问能否把程序运行时出现的异常堆栈信息也保存进log4j指定的日志文件中
- jsp项目文件运行出现java.lang.ClassNotFoundException和Failed to load or instantiate TagExtraInfo class异常
- xml解析时出现的莫名异常 不影响运行·
- lib依赖导致在app运行的时候出现的异常 Cause: com.android.dex.DexException: Multiple dex files define
- 生成器+列表生成式,生成器可以节省内存,随时调取函数运行,以及实现多线程运行函数,__next__()和.send(参数)的区别,a,b=b,a+b其实是元祖的用法,出现异常状态用try...except StopIteration来处理
- HOG+SVM行人识别程序运行时出现异常
- hadoop运行job任务出现异常