Linux网络延迟卡顿排查方案:从入门到实战

Linux网络延迟卡顿排查方案:从入门到实战

服务器网络延迟高、页面加载慢,是运维中最常见的“头疼病”。
很多新手一上来就重启网卡或者重装系统,其实完全没必要。
只要掌握几个工具和一套流程,你也能像老手一样快速锁定问题源头。
下面我按实际排查顺序,带你一步步操作。

排查前的准备:确认环境与工具

在动手之前,先确认几件事:

  • 当前服务器系统:本文以 CentOS 7/8 和 Ubuntu 20.04 为例,命令基本通用。
  • 检查基础网络:执行 ip a 查看网卡是否正常获取 IP。如果网卡状态为 DOWN,先 ifup eth0 启动。
  • 安装必要工具
  # CentOS / RHEL
  yum install -y mtr iftop iperf3 net-tools
  # Ubuntu / Debian
  apt install -y mtr iftop iperf3 net-tools

如果提示找不到包,换用 epel-release(CentOS)或 universe 源(Ubuntu)。

  • 准备一个远端测试 IP:比如谷歌的 8.8.8.8,或者你自己另一台服务器的公网 IP。

第一步:用 ping 做初步延迟测试

ping 是最快的“试金石”。

ping -c 10 8.8.8.8

关注两个值:

  • min/avg/max 延迟:如果平均延迟大于 50ms(对国内机房来说),说明网络链路可能有瓶颈。
  • 丢包率:丢包超过 0.5% 就需要重视了。

常见情况

  • 一直超时:检查防火墙(iptables -Lfirewall-cmd --list-all),或者远端屏蔽了 ICMP。
  • 偶尔超时:可能链路不稳定,进入下一步。

第二步:用 mtr 定位卡顿节点

mtr 结合了 ping 和 traceroute 的功能,能显示每一跳的丢包和延迟。

mtr -r -c 10 8.8.8.8

参数说明:

  • -r:报告模式,自动退出。
  • -c 10:发送 10 个探测包。

结果分析要点:

  • 最后一跳丢包高,前面都正常:一般是目标服务器自身问题(如带宽跑满、内核参数问题)。
  • 中间某一跳丢包严重:可能是运营商问题,你可以试着换个机房或联系 IDC。
  • 多个跳点延迟突然飙升:可能是路由绕路,比如从北京走到了广州再出去,需要调整路由策略。
避坑:有些路由器会主动丢弃探测包导致假丢包,但延迟不变则不影响数据转发。如果只有丢包没有延迟增大,别慌,继续看下一跳。

第三步:用 iftop 监控带宽占用

如果以上链路都正常,那可能是服务器内部带宽被某些进程占满了。

yum install -y iftop   # 或 apt install iftop
iftop -i eth0          # 替换成你的网卡名

运行后界面会实时显示每个连接的流量。
t 切换显示模式,按 n 以数字形式显示 IP。

常见问题

  • 某个 IP 的流量异常高:先确认 IP 归属(白名单还是未知),用 lsof -i :端口 查进程。
  • 本机流出流量爆满:检查是否有对外发包的服务,比如被挖矿程序当作跳板。

第四步:用 iperf3 进行带宽和延迟专项测试

当怀疑本地带宽或 TCP 参数不对时,用 iperf3 做点对点测试。

服务端(在被测的远程服务器上启动):

iperf3 -s -p 5201

客户端(在本机执行):

iperf3 -c <远程IP> -p 5201 -t 30

输出会告诉你实际的带宽、重传率、发送窗口大小等。
重传率超过 1% 说明丢包严重,需要检查网络质量或调整 TCP 参数(如 net.ipv4.tcp_congestion_control)。

常见高频问题解答

Q1:ping 通但业务拉取数据慢?
可能是 TCP 拥塞控制算法不适合高延迟链路。尝试改成 BBR:

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
lsmod | grep bbr   # 确认模块加载

Q2:mtr 显示中间节点不响应(*)?
多数是运营商做了安全策略,不必纠结,重点看最后一跳。

Q3:iftop 看不到内网流量?
默认只显示实时流量,用 -F 192.168.0.0/24 强制过滤。

验证与收尾:让结果落地

排查完问题后,必须验证“修好没有”:

  1. 再次运行 ping -c 20 <目标IP>,观察延迟和丢包是否恢复正常。
  2. curl -o /dev/null -s -w "%{time_total}" http://你的域名 测试接口响应时间。
  3. 最后用 nload eth0 看带宽曲线是否平稳。

如果以上都正常,恭喜你,网络卡顿问题已解决。
记得把关键服务器配置(如 BBR、防火墙规则)写入自动化部署脚本中,避免下次再踩坑。

如果你正在处理Linux网络延迟卡顿排查方案,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
Linux多用户权限隔离配置实操教程:从零开始隔离用户目录
下一篇
Linux系统时间同步chrony配置详解:新手也能轻松上手
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意