首页/网络/网络排障速查/自上而下排查法(应用层起步)
排查流程与方法36 条

自上而下排查法(应用层起步)

从业务现象出发反向定位:先看应用报什么错、HTTP 状态码与耗时分布,再倒推是 DNS、连接、TLS 还是传输问题,适合「能用但慢/报错」类故障。

网络排障速查网络更新于 2026-10-13

自上而下排查是什么

自上而下(top-down)从业务现象出发反向定位:先看应用报什么错、状态码与耗时分布,再倒推是 DNS、连接、TLS 还是传输问题。它比自下而上省时间,因为错误信息本身就能砍掉大半个搜索空间;代价是要求操作者能读懂应用层输出。适合「能用但慢」「部分请求报错」「切了环境之后才异常」这类故障。

基本信息

排查方向应用 → 传输 → 网络 → 链路
适用域名访问异常、部分功能报错、时快时慢
优势直接得到业务可用性结论,收敛速度快
依赖客户端有 curl / dig 等工具,能取到完整错误信息
注意错误信息只能缩小范围,最终仍需下层证据确认

典型使用场景

  • 页面能打开但图片和接口加载慢,需要判断卡在 DNS 还是服务端
  • 只在部分客户端复现,需要在异常客户端上抓到完整请求链路
  • 发布新版之后出现报错,需要确认是应用改动还是依赖变更
  • 第三方 API 调用失败,需要区分网络层不可达与应用层拒绝
  • 电话报障信息残缺,需要用一条 curl 同时拿到状态码与各阶段耗时

从应用往下剥

从应用往下剥
curl -v --connect-timeout 3 https://<域名>/ 2>&1 | head -40   # 应用层:错误与握手过程
dig +short <域名>                      # DNS:解析结果是否符合预期
nc -zv -w3 <IP> 443 || echo 端口层不通  # 传输层:TCP 能否完成握手
ping -c3 <IP>                          # 网络层:IP 是否可达
curl -o /dev/null -s -w '%{http_code} %{time_total}\n' <URL>  # 只取状态码与总耗时

错误信息判读

错误信息含义下一步
Connection refused目标端口没有监听或被主动拒绝查服务进程、监听地址与防火墙拒绝规则
Connection timed out握手包有去无回,多被中间设备丢弃抓包看 SYN 是否发出、有无应答
Connection reset by peer对端或中间设备主动发 RST查对端连接数上限、WAF 与负载均衡会话
Could not resolve hostDNS 解析失败查 resolv.conf、DNS 服务器与域名记录
SSL certificate problem证书校验失败查证书有效期、链完整性与系统时间
Empty reply from server连接建立但应用未返回数据查后端进程、超时配置与访问日志
先固定证据再动手:把 curl -v 的完整输出、报错时间点与客户端来源保存下来。自上而下的价值在于「用现象描述问题」,如果中途跳去改网络设备,这一步的收获就丢失了。

易错点

  • 只看到超时就断定是网络问题,忽略服务端 500 或数据库等待同样表现为变慢与超时
  • 不看错误原文只看「失败」两个字,把 refused(服务问题)与 timed out(通路问题)混为一谈
  • 在正常客户端反复测试,故障只在特定客户端或特定源 IP 出现时永远复现不了
  • 跳步去改网络设备前没有留下 curl -v 输出,改动后无法判断问题是否真的被解决

数据来源与参考

  • curl 手册:错误与 -v 诊断输出结构
  • man 1 dig / man 1 nc

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌