线上服务变慢,到底慢在哪?一份给后端和运维的网络分层排障手册

简介: 凌晨 2 点告警炸了:服务 P99 从 200ms 飙到 8s,但 CPU、内存、慢 SQL 全部正常——问题往往藏在你看不到的网络链路里。本文沉淀一套从 DNS、链路、TCP/TLS、HTTP 到 IP 信誉的「五层分层排障方法论」,配合命令行实操和真实案例,给后端、运维、SRE 同学一份可以直接抄进 Runbook 的网络排障手册。

凌晨 2 点,告警群炸了:商品详情页 P99 从 200ms 飙升到 8s。运维说服务器 CPU 内存一切正常,DBA 说慢查询日志里啥也没有,前端说 Bundle 没动过。问题悬了 3 个小时,最后定位到的元凶是——某省运营商的骨干节点路由抖动

如果你做过线上服务的稳定性保障,类似的剧情应该不陌生:所有应用层指标都正常,但用户就是说慢。这种时候,问题往往不在你能看到的应用层,而是藏在网络链路的某一层里。

本文整理我这几年踩过的坑,沉淀出一套五层分层排障方法论,配合具体命令和工具,给后端、运维、SRE 同学做一份可以直接照抄的排查手册。


一、为什么需要「分层」?

很多同学排障时容易陷入两个误区:

  1. 看到「慢」第一反应就是看应用日志、看慢 SQL——但日志和 SQL 都没问题的时候就懵了
  2. 把「慢」当成单一问题解决——其实从客户端发起请求到收到响应,中间至少要经过 5 层

这 5 层从下到上分别是:

层级 阶段 常见问题 典型工具
L1 DNS 解析 解析慢、被污染、被劫持、TTL 配置不合理 dig / nslookup
L2 网络链路 跨运营商绕路、骨干网拥塞、路由抖动 ping / mtr / traceroute
L3 TCP / TLS 端口未开、握手慢、证书链问题、安全组限制 tcping / openssl s_client
L4 HTTP 响应 TTFB 高、CDN 回源慢、网关超时 curl -w / 压测工具
L5 IP 信誉 出口 IP 被拉黑、被风控、被反欺诈拦截 威胁情报查询

排障的黄金原则:从下往上排,先确认基础设施,再看应用。 下层不通的时候去优化上层,等于在沙地上盖楼。

下面逐层来讲。


二、L1:DNS 解析层 —— 用户连「找到你」这一步都没走完

DNS 是用户访问服务的第一道关卡。这一层出问题,后面所有的优化都白搭。

一个真实案例

之前公司接入了一家第三方 SaaS,部分用户反馈服务不可用。后端、网关、SaaS 服务商查了半天都说没问题,最后发现是某省运营商的 DNS 把这个第三方域名解析到了一个完全错误的 IP——可能是历史缓存,也可能是污染。

这种问题在公司内网用 dig 一查永远是对的,因为公司用的是 8.8.8.8 或者 223.5.5.5,但用户用的是当地运营商默认的 DNS。

命令行排查

# 用指定 DNS 服务器查询
dig @8.8.8.8 yourdomain.com
dig @114.114.114.114 yourdomain.com
dig @223.5.5.5 yourdomain.com

# 查询 A、AAAA、CNAME 全套记录
dig yourdomain.com ANY +noall +answer

# 跟踪完整解析路径
dig +trace yourdomain.com

但单机查询不够,要看「全国一致性」

在自己的 ECS 上用 dig 查一万次也只能验证你这条链路的解析。真正要看的是全国各运营商节点的解析结果是否一致。

要重点关注:

  • 各地返回的 IP 是否一致 → 不一致可能是 DNS 劫持
  • 是否有节点解析到完全无关的 IP → 典型 DNS 污染
  • 各地解析耗时 → 超过 100ms 就要排查权威 DNS 配置
  • TTL 是否合理 → 太短会导致频繁解析,太长不利于切流

推荐工具:BiuPing 多地 DNS 查询,可以同时查询 A / AAAA / MX / CNAME 记录在全国电信、联通、移动各节点的生效情况,一眼看出有没有被污染或劫持。


三、L2:网络链路层 —— Ping 通了,但链路质量真的没问题吗?

DNS 没问题之后,下一步看网络链路本身

一个反直觉的事实:Ping 值低 ≠ 网络好

我之前接过一个游戏行业客户,他们的服务器从公司机器 Ping 平均 30ms,看起来非常完美。但玩家依然反馈「卡顿」「掉线」。

后来从全国多个节点持续 Ping 5 分钟才发现真相:

  • 平均延迟:30ms(看起来很美)
  • 丢包率:2.8%(开始出问题了)
  • 延迟抖动 Jitter:±180ms(致命)

对实时性要求高的场景(游戏、直播、视频会议、长连接 IM),抖动比平均延迟更重要。一个平均 100ms 但稳定的链路,比平均 30ms 但抖动 ±200ms 的链路体验好得多。

三个必看指标

# 持续 Ping,看长时间稳定性
ping -c 300 yourdomain.com

# 用 mtr 同时看路径和每一跳的丢包/延迟
mtr -rwzbc 100 yourdomain.com

# 输出示例(重点看 Loss% 和 StDev 列)
# HOST                    Loss%   Snt   Last   Avg  Best  Wrst StDev
# 1. 192.168.1.1          0.0%   100    1.2   1.5   1.0   3.2   0.4
# 2. 10.0.0.1             0.0%   100    5.3   6.1   4.8  12.3   1.2
# 3. xx.xx.xx.xx          0.0%   100   15.2  16.8  14.5  25.1   2.3
# ...

排查时盯三个指标:

  • 平均延迟:< 50ms 优秀,< 100ms 正常
  • 丢包率:> 1% 警觉,> 3% 用户体感明显
  • 延迟抖动 StDev:越小越好,最好 < 10ms

链路有问题怎么办?

光看 Ping 已经不够,要上 MTR / Traceroute 把每一跳路由都列出来。常见问题模式:

  1. 跨运营商绕路:电信用户访问联通服务器,数据包跑到香港绕一圈才回来
  2. 某一跳节点拥塞:前几跳都很快,突然某一跳延迟飙到 300ms+
  3. 国际链路抖动:晚高峰跨境出海链路几乎天天炸
  4. 运营商路由策略变更:早上还好的,晚上就开始绕路

定位到具体的丢包跳之后,看那一跳是哪个 AS、属于哪家运营商,提工单或者切线路解决。

推荐工具:BiuPing 多地 Ping路由追踪 / MTR,可以从全国电信/联通/移动 + 海外节点同时发起,一眼看出是哪个运营商的哪一跳出了问题。比单机 mtr 高效得多。


四、L3:TCP / TLS 层 —— 不是所有「不通」都是 Ping 不通

这一层专治「Ping 通但连不上」

很多场景下:Ping 完全通、延迟漂亮,但 TCP 连接就是建立不起来。常见原因:

  • 服务器防火墙放了 ICMP 但封了业务端口
  • 云厂商安全组没放行(这个真的是日经问题
  • 服务进程挂了但服务器还活着
  • LB / 网关的健康检查异常,但 ICMP 还能通
  • 运营商封了特定端口(经典 80 端口被运营商拦截)
  • DDoS 防护把 ICMP 放过去但限制了 TCP 新建连接

更常见的情况:生产环境为了安全直接禁了 ICMP,这时候 Ping 永远不通,但 TCP 是好的。

命令行排查

# 用 nc 测端口是否开放
nc -zv yourdomain.com 443
nc -zv yourdomain.com 8080

# 用 curl 测 TCP 连接耗时
curl -o /dev/null -s -w "TCP连接: %{time_connect}s\nTLS握手: %{time_appconnect}s\n首字节: %{time_starttransfer}s\n总时间: %{time_total}s\n" https://yourdomain.com

# 用 openssl 详细查看 TLS 握手过程
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -showcerts

# 看 TLS 握手具体耗时(可结合 -trace)
time openssl s_client -connect yourdomain.com:443 < /dev/null

TLS 握手慢的几个常见原因

  • 证书链太长:浏览器要验证整条信任链,每多一级就多一次开销
  • 没启用 TLS 1.3:1.2 是 2-RTT,1.3 是 1-RTT,差别明显
  • 没启用 OCSP Stapling:客户端要去 CA 查证书吊销状态,跨境时尤其慢
  • 没启用 Session Resumption:每次新连接都完整握手
  • 服务器加密套件太老:用了性能差的椭圆曲线

我之前帮一家公司排查 API 慢的问题,发现 TLS 握手单独就吃掉了 600ms——后来开了 TLS 1.3 + OCSP Stapling + Session Resumption,握手降到 80ms 以内。

推荐工具:BiuPing 在线 TCPing,专门用来测多地多线路对指定端口的 TCP 连通性,禁 Ping 环境也能用。比一台台跳板机上去 nc 高效得多。


五、L4:HTTP 响应层 —— 这才是真正的「网站测速」

到这一步,下层链路全部都是好的,问题就锁定到应用层了。

一个完整 HTTP 请求的耗时分布

阶段 含义 慢的常见原因
DNS Lookup 域名解析 见 L1
TCP Connect 三次握手 见 L2、L3
TLS Handshake HTTPS 握手 见 L3
TTFB 服务器返回首字节时间 应用层慢,重点排查对象
Content Transfer 内容传输 资源体积大 / 带宽不足 / GZip 没开

TTFB 是后端的命门

如果你看到 TTFB > 500ms,基本可以确定是应用层或者 CDN 回源的问题。继续往下排:

# 用 curl -w 拆解每个阶段耗时
curl -o /dev/null -s -w \
"DNS解析:    %{time_namelookup}s\n\
TCP连接:    %{time_connect}s\n\
TLS握手:    %{time_appconnect}s\n\
首字节TTFB: %{time_starttransfer}s\n\
总耗时:     %{time_total}s\n\
HTTP状态:   %{http_code}\n\
重定向次数: %{num_redirects}s\n" \
https://yourdomain.com/api/products/123

如果 TTFB 高,往下排查的几个方向:

  1. 应用层慢查询:重点查那个接口对应的 SQL、Redis 命中率、外部依赖
  2. CDN 回源:CDN 命中率多少?回源带宽够不够?回源链路稳不稳?
  3. 网关排队:API Gateway / Nginx 的 worker 数、队列深度
  4. 冷启动:Serverless 场景的冷启动可能轻松 1s+
  5. 跨区域调用:服务部署在华东,调了一个华南的下游
  6. 链路追踪缺失:没接入 APM 的话这一步会非常痛苦,强烈建议接入

测速一定要测多地

我有个客户的 API 服务部署在华东,他自己在杭州办公室测延迟 50ms,体验丝滑。但他的用户分布在新疆、云南、东北——那边测出来 TTFB 直接 1.5s 起步。后来在西部和北部各加了一组就近接入的节点才解决。

永远不要相信你自己电脑上的测速结果。 一定要从用户视角、多地、多运营商去看。

推荐工具:BiuPing 多地网站测速,给出 DNS / TCP / TLS / TTFB / 下载 完整瀑布流,能清楚看到时间花在哪一步、哪个地区慢。比 curl 串多个跳板机高效太多。


六、L5:IP 信誉层 —— 这是 90% 的开发都没听过的概念

这一层非常隐蔽,但一旦命中就会让你怀疑人生。

什么是 IP 信誉?

互联网上有大量威胁情报机构(Spamhaus、AbuseIPDB、各种反钓鱼联盟)会维护「黑名单 IP 库」。任何被举报过发垃圾邮件、被滥用、被识别为代理 / Tor / 数据中心 IP 的地址,都会被记录。

很多服务(CDN、邮件服务商、风控平台、海外 SaaS、Google reCAPTCHA、各种反欺诈系统)都会读这些黑名单,对黑名单上的 IP 直接拒绝服务或者降级处理

这跟我有什么关系?

关系大了。我亲眼见过的几种翻车场景:

  1. 新申请的 ECS 公网 IP,发出去的邮件全部进对方垃圾箱——前持有者发过垃圾邮件,IP 被多家邮件服务商拉黑
  2. 海外用户访问某些功能直接 403——CDN 把这个出口 IP 判成了高风险
  3. 接入第三方支付/登录回调失败——对方风控把出口 IP 识别成机房代理
  4. Google reCAPTCHA / Cloudflare Turnstile 一直要求验证——IP 信誉评分太低
  5. 国外 SaaS 接口偶发 403/429——按 IP 信誉做了限流

这些问题,查代码、查抓包、查日志全部都查不出来。 因为你的代码完全没毛病,是 IP 本身在「外面名声不好」。

怎么排查

把服务器出口 IP(或者用户反馈有问题的客户端 IP)丢进 IP 信誉查询,看:

  • 是否在主流黑名单里(Spamhaus、AbuseIPDB 等)
  • 风险评分多少
  • 是否被识别为代理 / VPN / Tor
  • 是否被分类为机房 IP(很多场景下机房 IP 会被歧视)
  • 历史滥用记录

如果 IP 已经被「污名化」了,最快的解决方法是申请释放重新分配,或者更换出口 NAT IP。这一步省下来的排查时间,能比你优化整个应用还多。

推荐工具:BiuPing IP 信誉查询,聚合了多个威胁情报源,一眼看出 IP 的「江湖名声」。新机器接入前建议先查一下。


七、实战串联:用这套方法 5 分钟定位一个真实问题

讲了这么多理论,来一个我去年真实排过的 case 串一下。

背景:一个电商客户线上告警——商品详情页 P99 从 200ms 飙升到 8s,但只有部分用户复现,监控里 ECS、RDS、Redis 全部正常。

按这套方法走了一遍:

L1 DNS 排查:多地查询,所有节点解析到的都是 CDN 回源 IP,正常 ✅

L2 链路排查:从全国 20 个节点持续 Ping 这个 CDN IP,发现 广东电信节点丢包率 8%、延迟抖动 ±150ms,其他节点正常。问题缩小到广东电信用户。

继续 MTR:从广东电信发起 traceroute,发现数据包在某个省级骨干节点的 Hop 上持续丢包——典型的链路拥塞。

L3 TCP 排查:广东电信对 443 端口的 TCP 握手成功率只有 70%,跟丢包率吻合 ✅

L4 HTTP 排查:广东电信节点测 TTFB 飙到 4 秒,同一时刻其他地区 TTFB 都在 100ms 以内。证实就是这条链路的问题,跟应用层无关。

L5 IP 信誉排查:顺手查了下 CDN IP,干净的,排除被风控拦截的可能 ✅

结论:CDN 厂商在广东电信的 PoP 节点出现链路异常。截图带数据丢工单,2 小时后他们切换了出口路由,问题解决。

整个排查从开始到定位,约 5 分钟。 如果不是按分层方法走,光让开发去翻代码、翻 SQL、翻日志,估计加班到天亮也找不出来。


八、写在最后:这套方法的工程价值

总结一下「五层分层排障法」:

  1. L1 DNS 层 → 域名解析对了吗?多地解析一致吗?
  2. L2 链路层 → Ping 通吗?延迟抖动正常吗?路由有没有绕路?
  3. L3 TCP/TLS 层 → 端口能握手吗?TLS 握手快吗?
  4. L4 HTTP 层 → TTFB 高在哪一段?哪个地区慢?
  5. L5 IP 信誉层 → 出口 IP 在黑名单上吗?被风控了吗?

核心顺序:从下往上,从基础设施到应用。 这个顺序不能颠倒,因为下层不通的时候去优化上层,纯属浪费时间。

把这套方法做成一份排障 Runbook 沉淀到团队 wiki 里,下次告警的时候照着走一遍,能省 80% 的定位时间。

我用的这一整套工具都在 BiuPing 这个站点上,免费、不用注册、支持 IPv4/IPv6 双栈,对后端、运维、SRE 都挺友好。新接入业务、上线新机器、做容量评估、排查线上问题的时候都能用上。


如果这篇文章对你的线上稳定性保障有帮助,欢迎收藏。也欢迎在评论区分享你踩过的网络坑——这种事,看一万遍理论不如听一个真实案例。

目录
相关文章
|
11天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23457 10
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
15天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
4943 17
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
16天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
5932 14
|
5天前
|
人工智能 缓存 Shell
Claude Code 全攻略:命令大全 + 实战工作流(完整版)
Claude Code 是一款运行在终端环境下的 AI 编码助手,能够直接在项目目录中理解代码结构、编辑文件、执行命令、执行开发计划,并支持持久化记忆、上下文压缩、后台任务、多模型切换等专业能力。对于日常开发、项目维护、快速重构、代码审查等场景,它可以大幅减少手动操作、提升编码效率。本文从常用命令、界面模式、核心指令、记忆机制、图片处理、进阶工作流等维度完整说明,帮助开发者快速上手并稳定使用。
940 1
|
4天前
|
前端开发 API 内存技术
对比claude code等编程cli工具与deepseek v4的适配情况
DeepSeek V4发布后,多家编程工具因未适配其强制要求的`reasoning_content`字段而报错。本文对比Claude Code、GitHub Copilot、Langcli、OpenCode及DeepSeek-TUI等主流工具的兼容性:Claude Code需按官方方式配置;Langcli表现最佳,开箱即用且无报错;Copilot与OpenCode暂未修复问题;DeepSeek-TUI尚处早期阶段。
863 2
对比claude code等编程cli工具与deepseek v4的适配情况
|
1月前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
25259 65
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)