線上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