【内推字节】欢迎简历chengxinsong@bytedance.com

记录一次nginx故障:recv() failed (104: Connection reset by peer) while reading response header from upstream,

一、前言

这个问题在最近的站点:http://www.chengxinsong.cn/中出现,可能最近忙点工作上事情,没有时间照看这些站点,导致最近两个月出现访问不了时候有点多。


二、定位问题

发现页面上显示:


同时http请求502


第一反应是要去看ngin的错误日志:

找到Nginx的错误日志


然后google一下,发现原因:检查链接是否已经close。

1、upstream发送了RST,将连接重置。

2、errno = 104错误表明你在对一个对端socket已经关闭的的连接调用write或send方法,在这种情况下,调用write或send方法后,对端socket便会向本端socket发送一个RESET信号,在此之后如果继续执行write或send操作,就会得到errno为104,错误描述为connection reset by peer。

3、如果对方socket已经执行了close的操作,本端socket还继续在这个连接上收发数据,就会触发对端socket发送RST报文。按照TCP的四次握手原理,这时候本端socket应该也要开始执行close的操作流程了,而不是接着收发数据。


三、可能导致问题的原因

1、nginx缓存小,timeout小

在http段修改或者新增配置

proxy_buffer_size  128k;  
proxy_buffers   32 32k;  
proxy_busy_buffers_size 128k;  

在location段修改或者新增配置

client_max_body_size 20m;
client_body_buffer_size 256k;
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
proxy_buffer_size 128k;
proxy_buffers 32 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;

然后重启nginx,重启项目。我的问题就解决了。


2、nginx快速定位异常




文章转载:原创
感谢你的阅读,本文由 sau交流学习社区 版权所有。
如若转载,请注明出处:sau交流学习社区-power by saucxs(程新松)(/page/898.html)
交流咨询
    官方QQ群
    群号663940201,欢迎加入!
    sau交流学习社区交流群

微信群
欢迎加入微信群
微信公众号
欢迎关注微信公众号

图文推荐

微信群
saucxs聊天机器人
saucxs
hi ,欢迎来到sau交流学习社区,欢迎与我聊天,问我问题哦!