Nginx 104 Connection reset by peer故障处理
故障现象
1.看日志发现正常日志和错误日志比例几乎1:1
2.错误日志全部是104: Connection reset by peer) while reading upstream
3.看访问日志也没有其他http错误状态码
[root@VM_0_22_centos logs]# ls -lh total 389M -rw-r--r-- 1 work work 191M Oct 30 17:30 ttt.minminmsn.com_access.log -rw-r--r-- 1 work work 199M Oct 30 17:30 ttt.minminmsn.com_error.log [root@VM_0_22_centos logs]# tail -n 1 ttt.minminmsn.com_error.log 2020/10/30 17:30:27 [error] 14063#0: *807476828 readv() failed (104: Connection reset by peer) while reading upstream, client: 117.61.242.104, server: ttt.minminmsn.com, request: "POST /yycp-launcherSnapshot/launcherSnapshot/querySnapshotSync HTTP/1.1", upstream: "http://192.168.8831:8081/ttt", host: "ttt.minminmsn.com" [root@VM_0_22_centos logs]# cat ttt.minminmsn.com_access.log |awk '{print $9}'|sort |uniq -dc 1081274 200 6 304 125 400 27482 404 145 429 106 499 8 500
分析问题
1.连续责任人咨询业务场景发现客户端请求基本上都是POST请求,开始以为是上传大文件连接超时了,后来开发确认为了安全使用POST请求,所以并没有大文件上传
2.由于upstream重置连接了,就是说后端主动断开了连接,然后发现连接里有很多TIME-WAIT,应该是qps比较大的情况下,连接处理比较快还在断开连接中就显得比较多了
3.nginx作为反向代理既然是客户端又是服务端,当和后端服务建立连接时并没有默认开启长连接,开启长连接后性能应该会提升很多
4.默认开启长连接不需要keeplive参数,如下是nginx官网查寻的keepalive参数,看的不是很明白,不过有个链接讲的很清楚,他可以激活连接缓存,应该属于长连接性能优化类
5.keepalive参数值应该与qps有关,默认不需要设置太大,如果访问日志里面有5XX错误还得根据实际情况调整,以达到最优效果
下面是官网keeplaive参数解释
Syntax: keepalive connections;
Default: —
Context: upstream
This directive appeared in version 1.1.4.
Activates the cache for connections to upstream servers.
The connections parameter sets the maximum number of idle keepalive connections to upstream servers that are preserved in the cache of each worker process. When this number is exceeded, the least recently used connections are closed.
It should be particularly noted that the keepalive directive does not limit the total number of connections to upstream servers that an nginx worker process can open. The connections parameter should be set to a number small enough to let upstream servers process new incoming connections as well.
When using load balancing methods other than the default round-robin method, it is necessary to activate them before the keepalive directive.
处理方案
1.修改nginx配置开启长连接及结合连接缓存
2.重启nginx服务
主要配置如下
upstream gateway{ server 192.168.88.31:8081; server 192.168.88.44:8081; server 192.168.88.115:8081; server 192.168.88.80:8081; #以下是新增配置 keepalive 100; } location / { proxy_pass http://gateway; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #以下是新增配置 proxy_connect_timeout 120; proxy_send_timeout 300; proxy_read_timeout 300; proxy_http_version 1.1; proxy_set_header Connection ""; }
检查效果
1.查看错误日志
错误日志清空后没有增长过
[root@VM_0_22_centos logs]# ls -lh total 389M -rw-r--r-- 1 work work 389M Oct 30 18:50 ttt.minminmsn.com_access.log -rw-r--r-- 1 work work 446 Oct 30 18:10 ttt.minminmsn.com_error.log
2.查看连接数状态
长连接前TIME-WAIT比较多
[root@VM_0_22_centos logs]# ss -an |awk '{print $2}'|sort |uniq -dc |sort -rn 5045 TIME-WAIT 156 ESTAB 62 UNCONN 21 LISTE
长连接后TSTAB比较多
[root@VM_0_22_centos ~]# ss -an |awk '{print $2}'|sort |uniq -dc |sort -rn 511 ESTAB 62 UNCONN 52 TIME-WAIT 21 LISTEN
参考文档
http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive
https://www.cnblogs.com/sunsky303/p/10648861.html
http://blog.51yip.com/apachenginx/2203.html

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
九大操作系统掌门人首聚对话:Windows和安卓已不适合物联网场景
“软件产业存在短板,特别是一些大型基础软件,我们还受制于人。”近日在由中国专业IT开发者社区CSDN等主办的“长沙·中国1024程序员节”上,中国工程院院士倪光南说。 软件定义硬件,软件定义制造。软件定义的时代,中国如何改变“缺芯少魂”的现状?又该如何迎接新时代的机遇和挑战?在此次活动上,华为鸿蒙、麒麟、阿里云OS等我国IT史上操作系统领域九大操作系统掌门人也首次齐聚,就国内操作系统的发展现状、系统软件的生态建设、未来的机遇等进行了对话解读。 20年增长百倍 仍存短板和卡脖子 软件包括操作系统、工业软件、数据库等,其为各类应用提供了更为底层的支撑。伴随着中国网信行业不断迭代升级发展,软件产业也保持着高速发展。 据倪光南透露,2000年中国软件规模大约是560亿人民币,而去年工信部统计的数据则达到7万多亿,二十年增长100多倍。CSDN 创始人蒋涛还预计,未来十年,中国软件产业还能翻上十倍、一百倍,需要开发者的积极参与和构建开发者生态。 中国工程院院士倪光南 为什么中国软件产业保持快速增长?倪光南认为主要有三个方面原因,第一是人才。人才是软件发展的第一资源,把第一资源调动起来,产业发展潜...
- 下一篇
高手问答第 256 期 —— Harbor:助你玩转云原生制品管理
云原生技术的兴起进一步助力企业实现数字化转型,赋能企业IT战略升级。在云原生生态中,容器镜像、Helm Charts等云原生制品的管理与分发是至关重要的一环。高效地运维云原生制品仓库以支撑容器化业务和平台,是踏入云原生世界必要的步骤。 Harbor是国内原创的云原生开源项目,是业界广泛使用的云原生制品仓库项目,可帮助用户提高云原生制品管理效率, 例如:OCI制品的管理、高可用制品仓库的构建、安全策略的设计、备份和恢复策略的应用以及API的使用等等。 OSCHINA本期高手问答(2020年 11月 3 日 —— 2020 年11 月 9 日)邀请到了来自Harbor开源项目的张海宁老师@burnabybull 和邹佳老师 @steven_zou ,与大家一起进行云原生制品管理的最佳实践探讨。 问答主题 本次问答主要包括以下方向: 如何使用Harbor搭建私有仓库(安装与部署) 如何实现资源隔离与多租户模型(项目和RBAC) 如何高效分发云原生制品(复制,缓存和P2P) 如何实现云原生制品的安全分发(漏洞扫描和签名) 资源清理与垃圾回收 构建高可用的云原生制品仓库服务 与Harbor集成实...
相关文章
文章评论
共有0条评论来说两句吧...