服务器 Gateway 故障排查指南
一 快速定位与先期判断
top/htop、free -m、df -h、ss -s、netstat -tulpen | grep -E '(:80|:443)'ping、traceroute/tracert、curl -Iv http(s)://目标systemctl status nginx/haproxy/php-fpmjournalctl -u nginx -xe、tail -n100 /var/log/nginx/error.log | grep -i '502\|504'二 分层排查步骤
curl -Iv http://上游IP:端口/health 或 telnet 上游IP 端口,确认端口与协议可达。traceroute 定位在哪一跳丢包/延迟异常;必要时联系 运营商核查线路。nslookup/dig 上游域名 验证解析是否稳定;若使用内网域名,确认 CoreDNS/内网 DNS 记录正确。systemd-resolve --flush-caches 或 ipconfig /flushdns),必要时临时改用公共 DNS或将上游 IP 硬编码到网关配置做 A/B 验证。nginx -t;在网关上 curl http://127.0.0.1/health 验证自身监听;核对上游 IP/端口/协议与负载均衡目标组。proxy_connect_timeout 30s; proxy_read_timeout 60s; proxy_send_timeout 60s;proxy_next_upstream error timeout http_502 http_504; 做故障转移。upstream sent too big header 时增大缓冲:
fastcgi_buffer_size 32k; fastcgi_buffers 8 32k;proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k;pm.max_children、pm.max_requests)、数据库连接池是否耗尽;必要时扩容或优化慢查询。三 常见症状与修复要点对照表
| 症状 | 高概率原因 | 快速验证 | 修复要点 |
|---|---|---|---|
| 全站间歇性 502 | 上游进程崩溃/进程池耗尽(如 PHP-FPM) | `ps aux | grep php-fpm;查看 error.log中connect() failed或upstream prematurely closed` |
| 特定接口 504 | 上游处理慢/第三方阻塞/超时阈值低 | curl -w "@curl-format.txt" -o /dev/null -s http://上游/health 观察耗时 |
优化 SQL/代码;延长网关 proxy_read_timeout;引入异步/队列 |
| 仅某地区异常 | DNS 解析到错误 IP/缓存;运营商链路问题 | dig +short 域名 @223.5.5.5 与 @8.8.8.8 对比;traceroute 路径差异 |
修正 DNS 记录;刷新缓存;切换公共 DNS;报障运营商 |
| 开启 HTTPS 后 502/504 | SSL/TLS 证书过期/链不完整/协议不匹配 | openssl s_client -connect 域名:443 -servername 域名 |
更新/重新部署证书;统一 TLS 版本与套件 |
返回 upstream sent too big header |
上游响应 Header/Body 过大 | 网关错误日志明确提示 | 增大 proxy_buffer_size / fastcgi_buffer_size 等缓冲参数 |
| 使用 CDN/LB 后异常 | 健康检查失败/节点故障/配置未同步 | 控制台查看 LB 目标组与 CDN 节点状态 | 切换回源验证;修复健康检查;刷新 CDN 缓存/回源配置 |
四 临时恢复与长期优化
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。