nginx 'no live upstreams while connecting to upstream' 异常解决

线上服务的nginx突然又开始偶发性的报错:no live upstreams while connecting to upstream,客户端收到的都是nginx的502.

实际上upstream服务一切正常,没有任何异常的log. 问题大概率出现在nginx和upstream的连接上,因为使用了keepalive长连接.

进一步观察出现error的时间都是触发nginx -s reload的时间(因业务需要,要每5分钟对nginx log进行切分),所以怀疑是nginx重启导致和upstream之间的长连接断开导致的.
解决方案就是将max_fails调大:

server 172.21.16.46:1718  max_fails=30 fail_timeout=15s;
server 172.21.16.44:1718  max_fails=30 fail_timeout=15s;

其中的原理比较复杂,这篇文章介绍的非常详细:
长连接报错问题排查过程

FireShot Capture 008 - Nginx upstream长连接报错问题排查过程 - Unifix - Medium - heshaobo2012.medium.com.png

你可能感兴趣的:(nginx 'no live upstreams while connecting to upstream' 异常解决)