KKCE: Ping检测 100%丢包?先别重启服务器

时间:2026-11-03 编辑:admin1

凌晨一点,手机震了。钉钉告警:「xx.xxx.xxx.xxx Ping 检测 100% 丢包,持续 5 分钟。」

我第一反应:机器 OOM 了?机房割接?赶紧翻起床开电脑。

登云控制台,VNC 连上去——机器活着,CPU 12%,内存还剩 6 个 G,Nginx 进程跑得好好的。再一看,同段其他机器也全绿。

这时候如果你跟我以前一样,第一反应是「重启试试」,那恭喜你,白折腾一次还背个变更记录。

Ping 检测 100% 丢包 ≠ 服务器宕机。​ 这是运维排障里最容易被误读的信号之一。

一、先搞清楚:Ping 检测到底在测什么

Ping 用的是 ICMP 协议(Internet Control Message Protocol),本质是操作系统内核的网络层探测包。它做的事只有一件:

从 A 主机发一个 echo request 到 B 主机,B 主机回一个 echo reply。

它测的是:

  • 目标 IP 是否在线(三层网络可达)
  • 往返延迟多少
  • 有没有丢包

它测不了的:

  • 端口开没开(80/443 通不通)
  • 防火墙是不是拦了业务流量
  • Nginx/Apache 是不是挂了
  • SSL 证书有没有问题
  • DNS 解析对不对
  • 应用层有没有报错

所以"Ping 检测 100% 丢包"的准确翻译是:检测节点到目标 IP 的 ICMP 包全部没收到回包。​ 至于上面跑的网站服务正不正常,ICMP 完全不知道。

二、Ping 检测 100% 丢包的七种真实原因

原因 1:防火墙/安全组禁了 ICMP

这是最常见的。很多运维为了安全,安全组里直接 drop 所有 ICMP。结果 Ping 全丢,但 80/443 正常服务。

原因 2:运营商链路抖动

骨干网割接、光缆被挖、路由震荡——这些都会导致某个运营商到目标 IP 的链路中断。但其他运营商可能正常。

原因 3:目标服务器 ICMP 速率限制

Linux 默认有 net.ipv4.icmp_ratelimit,高并发 Ping 会被内核限速丢包。不是不通,是回包被限了。

原因 4:中间路由设备丢 ICMP

有些运营商的路由器对 ICMP 优先级最低,拥塞时优先丢 ICMP 包保 TCP 流量。你 Ping 丢包,但用户访问正常。

原因 5:目标 IP 被黑洞路由

DDoS 防护触发黑洞,所有流量(包括 ICMP)被丢弃。这是唯一一种"真的不可达",但 TCP 也一样不通。

原因 6:源检测节点自身问题

KKCE 的某个拨测节点本身网络异常,从该节点发出的 Ping 全丢。换几个节点测就知道。

原因 7:服务器真的挂了

最后才考虑这个。如果所有节点、所有协议全不通,那大概率是真挂了。

三、用 KKCE Ping 检测分运营商验证

KKCE 的 Ping 检测​ 支持按电信/移动/联通/海外分节点测试。100% 丢包时第一步不是重启,是看丢包是不是分运营商的。

操作:

  1. 打开 KKCE Ping 检测
  2. 输入 IP 或域名
  3. 分别选电信、移动、联通、海外节点
  4. 对比结果

判读:

  • 某运营商丢包、其他正常 → 链路/路由问题,不是机器问题
  • 全运营商丢包 → 继续用 TCPing 验证端口
  • 仅个别节点丢包 → 该节点自身异常,忽略

四、交叉验证:别让 ICMP 骗了你

Ping 检测 100% 丢包后,立刻做三步交叉验证:

第一步:TCPing 打业务端口

用 KKCE TCPing 检测​ 打 80/443/22。如果 Ping 丢包但 TCPing 通,说明机器活着、服务正常,只是 ICMP 被拦了。这是最好的结果。

第二步:网站测速看应用层

用 网站测速​ 发真实 HTTPS 请求。能返回 200 就证明业务完全没问题。

第三步:MTR 看路由路径

用 MTR 路由去程​ 追踪,看哪一跳开始丢包。如果是最后一跳丢,可能是目标禁 ICMP;如果是中间某跳开始丢,是链路问题。

五、实战复盘:凌晨告警的真相

回到开头那个凌晨告警。我的排查过程:

  1. Ping 检测:广东移动节点 100% 丢包,北京电信 0% 丢包
  2. TCPing 443:广东移动节点连接成功,延迟 42ms
  3. 网站测速:广东移动 HTTPS 返回 200,TTFB 180ms
  4. MTR 路由去程:第 9 跳开始 ICMP 丢包,但 TCP 正常

结论:广东移动到该机房的链路在某一跳路由设备对 ICMP 做了限速/丢弃,TCP 流量完全不受影响。业务零影响。

处理:没做任何变更。在监控里把 Ping 告警的触发条件从"1 次丢包"改成"连续 3 次丢包 + TCPing 也失败"才告警。误报率直接降到零。

六、监控配置建议:别被误报吵醒

Ping 检测作为监控手段没问题,但告警阈值要合理:

场景建议配置
普通业务连续 3 次丢包 + TCPing 443 失败才告警
核心接口Ping 丢包 + HTTP 状态码非 200 双条件
DDoS 防护期临时关闭 Ping 告警(黑洞期间必丢)
禁 ICMP 的机器用 TCPing 监控替代 Ping

KKCE 的 Ping 监控​ 和 TCPing 检测​ 可以组合使用,避免单一协议误报。

七、什么时候 100% 丢包才是真告警

必须满足以下条件之一才需要立刻处理:

  • 所有运营商 Ping 全丢 + TCPing 全失败
  • Ping 丢包 + 网站测速返回 5xx/超时
  • 丢包率从 0% 突然跳到 100% 且持续超过 5 分钟
  • 多台同段机器同时丢包(可能是交换机/上联故障)

以下情况可以忽略或降级告警:

  • 单运营商丢包,TCPing 正常
  • 个别节点丢包,其他节点正常
  • 丢包率波动但业务响应正常
  • 已知禁 ICMP 的机器

八、排障口诀

Ping 丢包,先分运营商看

TCPing 通,机器就没挂

网站测速 200,业务就正常

全协议全节点都不通,再重启不迟

覆盖全球3000+节点、支持 IPv4/IPv6 双栈与多运营商对照,排障不用切平台,就在 www.kkce.com 一次跑完。

-快快测