线上nginx的一次“no live upstreams while connecting to upstream ”分析


可能的原因:
后端服务器的 TCP 队列满了,造成 nginx 连接后端时连接被丢弃,队列满可能是后端 PHP 程序处理速度慢,或者正在做压测。

可以观察后端服务器和 nginx 的 TIME_WAIT 状态连接数,以及建立的连接数。

nginx 报错时用 `netstat -s | grep listen` 观察

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

upstream http_backend {
    server 127.0.0.1:8080;

    keepalive 256;
}
server {
    ...

    location /http/ {
        proxy_pass http://http_backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        ...
    }
}

参考:https://www.nginx.com/blog/tuning-nginx/
https://xiezefan.me/2017/09/27/nginx-502-bug-trace/

https://www.cnblogs.com/dadonggg/p/8778318.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM