美文网首页
一次nginx 502问题排查和解决

一次nginx 502问题排查和解决

作者: 桭宝 | 来源:发表于2020-03-12 12:23 被阅读0次

    问题描述

    现象:生产环境50并发压测出现0.01%的错误率,全部为502/Bad Gateway

    原因分析

    1.通过观察nginx error log发现产生502的原因为"upstream prematurely closed connection while reading response header from upstream",也就是请求期间上游服务器关闭连接导致。

    2.分析发现线上nginx upstream配置了keepalive参数,但没有配置proxy_http_version和proxy_set_header Connection,nginx与上游服务器间的连接为短链接。上游服务器处理完请求后会主动关闭连接,但因为nginx upstream设置了keepalive,nginx在收到reponse后仍然会尝试复用此连接,而此时连接已被上游服务器关闭,导致请求失败,出现上述报错。

    解决方案

    问题解决方式有2种,均已验证生效:

    1.仍然使用短链接,去掉upstream中的keepalive参数,保证nginx不再尝试复用,否则在请求密集的时候有概率出现502;

    2.使用长连接,加上proxy_http_version 1.1和proxy_set_header Connection ""  这两个配置项,保证服务端在请求处理完成后不主动关闭连接。

    为避免出现大量TIME_WAIT,提高资源复用率,目前使用第二种长连接的方式。

    相关文章

      网友评论

          本文标题:一次nginx 502问题排查和解决

          本文链接:https://www.haomeiwen.com/subject/roeyxhtx.html