排障流程
502、超时、DNS vs 网络 vs 应用分层查。
30 分钟
排障流程
线上问题常表现为 打不开、超时、502、DNS 错误。按 DNS → 网络 → 端口 → HTTP → 应用 分层排查,可避免在应用日志里找 IP 不通的问题。
学习目标
- 掌握 CodeRoadMap 标准排障顺序
- 区分 DNS、防火墙、upstream、应用四类根因
- 串联本 track 工具与相关 lesson 链接
核心内容
标准检查单
1. DNS dig coderoadmap.cn A
2. 网络 ping / traceroute
3. 443 curl -I https://coderoadmap.cn/
4. 防火墙 安全组 + ufw(443 开、8080 关)
5. Nginx nginx -t;error.log upstream
6. upstream curl 127.0.0.1:3000 / :8080
7. DB mysql / JDBC 日志
DNS 专课:dns-troubleshoot;HTTP 状态码:http-status。
常见现象对照
| 现象 | 优先怀疑 | 命令 |
|---|---|---|
| 域名无法解析 | DNS 记录/TTL | dig +trace |
| 连接超时 | 安全组/路由 | ping、telnc 443 |
| Connection refused | 进程未监听 | ss -tlnp |
| 502 Bad Gateway | upstream 挂了 | curl 127.0.0.1:8080 |
| 504 Gateway Timeout | 应用慢/死锁 | 应用日志、DB |
| 200 但 JSON 错 | 应用逻辑 | Spring 日志 |
502 快速路径(本站最高频)
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:3000/
curl -s http://127.0.0.1:8080/actuator/health
ss -tlnp | grep -E '3000|8080'
tail -20 /www/wwwlogs/nginx/error.log
Nginx 能连但 upstream 拒绝 → 修 Java/Node 进程(linux-process、ngx-proxy)。
全栈路径回顾
浏览器 → DNS → 公网:443 → Nginx → :8080/:3000 → MySQL:3306
↑每层都可能失败,从上往下缩小范围
练习
- 写 5 步以内的个人「502 检查单」
- 故意停 PM2 platform,观察 502,按检查单恢复
- 区分「DNS 错」与「8080 未启动」的 curl 表现