Nginx 502 排查顺序:进程活着但无响应该从哪里查(运维笔记)
发表于 : 周日 10月 04, 2026 2:02 am
502 不代表后端挂了,很多情况下进程还在,只是处理不过来或者连不上。
第一步:先确认是谁返回的 502
如果日志里是 connect() failed (111: Connection refused),说明 Nginx 连不上后端,问题在 PHP-FPM 或后端服务,不在 Nginx 本身。
第二步:确认后端进程状态
进程活着但端口没监听,多半是启动失败后进入了 inactive 状态,用 journalctl -u php-fpm -n 50 看原因。
第三步:区分慢和死
本机也 502 且耗时极短,是连接被拒;耗时接近超时时间,是处理堵塞。后者要查慢查询、锁等待和进程池是否打满。
第四步:确认根因再动手
改配置之前先确认根因:是子进程池不够、后端超时设置太短,还是数据库拖慢了请求。没确认根因就重启,只会把问题推到下一次。
第一步:先确认是谁返回的 502
代码: 全选
curl -sI https://yoursite/ | head -3
tail -50 /var/log/nginx/error.log如果日志里是 connect() failed (111: Connection refused),说明 Nginx 连不上后端,问题在 PHP-FPM 或后端服务,不在 Nginx 本身。
第二步:确认后端进程状态
代码: 全选
systemctl status php-fpm
systemctl status nginx
ss -lntp | grep -E ':80|:9000'进程活着但端口没监听,多半是启动失败后进入了 inactive 状态,用 journalctl -u php-fpm -n 50 看原因。
第三步:区分慢和死
代码: 全选
curl -o /dev/null -s -w '%{http_code} %{time_total}' http://127.0.0.1/本机也 502 且耗时极短,是连接被拒;耗时接近超时时间,是处理堵塞。后者要查慢查询、锁等待和进程池是否打满。
第四步:确认根因再动手
改配置之前先确认根因:是子进程池不够、后端超时设置太短,还是数据库拖慢了请求。没确认根因就重启,只会把问题推到下一次。