Linux 中怎么排查网络延迟过高的抓包验证

秋枫同学_1500

秋枫同学_1500

2026-11-02

230人浏览

原创

mtr是排查Linux网络延迟的首要工具,用于精准定位高延迟或丢包发生的跳点;抓包仅为验证手段,须在lo或any接口进行以规避offload失真,并结合netstat -s等协议栈统计确认根因。

linux 中怎么排查网络延迟过高的抓包验证

排查 Linux 网络延迟过高,抓包不是第一步,而是验证性手段——它用来确认“问题是否真出在协议交互环节”,以及“卡在哪一环”。盲目抓包容易被网卡 offload、时间精度、过滤失真干扰,反而误导判断。关键在于:选对接口、避开卸载、带上下文比对。

先用 mtr 定位可疑跳点,再针对性抓包

mtr 是抓包前的必经筛子。它能告诉你延迟突增或丢包是从哪一跳开始的,从而决定抓包位置:

  • 若第一跳(本地网关)就 Avg 高 + StDev 大 → 问题在本机或局域网,优先在本机 lo 或 eth0 抓包
  • 若中间某跳(如第3跳)Loss% 突升 → 问题大概率在该设备或其上游链路,需协调对端或中间网络设备抓包
  • 若最后一跳丢包但前面都正常 → 目标服务器自身处理异常,应在目标机上抓包(注意别只抓 eth0,也抓 lo)

抓包必须用 lo 或 any 接口,避免 offload 失真

在物理网卡(如 eth0)上直接抓包,常因 TSO/GSO/LRO 等硬件卸载功能导致看到的不是真实 TCP/IP 包:SYN 可能被合并、ACK 可能被延迟合并、时间戳不准。正确做法是:

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载
  • 验证本机协议栈行为:用 tcpdump -i lo -n port 80 抓回环流量,完全绕过网卡,看应用层发包和内核 ACK 是否及时
  • 捕获全链路原始帧:用 tcpdump -i any -n port 80,它强制内核在协议栈更早阶段截获,保留真实时间戳和分片状态
  • 避免 -i eth0 单独使用,除非你已确认 ethtool -k eth0 显示所有 offload 均为 off

抓包后重点看三类模式,不只数丢包

延迟高 ≠ 丢包多。抓包要盯住时序逻辑,而非单纯统计:

  • SYN 半开堆积:客户端连续发多个 SYN,无 SYN+ACK 回应 → 检查目标端口是否监听(ss -tlnp | grep :端口)、防火墙是否拦截(iptables -L -n -v)、SYN Cookie 是否误触发(netstat -s | grep "SYNs to LISTEN sockets")
  • ACK 延迟或缺失:服务端收到数据后,迟迟不发 ACK(>200ms),或 ACK 被延迟合并 → 查 /proc/sys/net/ipv4/tcp_delack_min、软中断堆积(top 看 %si)、RPS 是否未启用
  • 重传与乱序共存:同一 Seq 号多次重传,同时出现明显乱序(Wireshark 中 “TCP Out-Of-Order” 提示)→ 指向中间设备 QoS 限速、队列策略激进,或本机网卡中断绑定不均

配合 netstat -s/ss -s 看协议栈内部计数

抓包看到现象,要用协议栈统计确认根因。例如:

  • 抓到大量重传,但 netstat -s | grep "TCPSynRetrans" 值很小 → 重传来自用户态(如应用层重试),非内核 TCP 行为
  • 抓包显示大量 DUP-ACK,而 netstat -s | grep "TCPTimeouts" 持续增长 → 真实丢包,需查网卡 RX errors/dropped
  • UDP 流量延迟抖动大,netstat -s | grep "UdpInErrors" 非零 → 很可能是 net.core.rmem_max 过小或 DMA 内存不足,不是网络链路问题

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux linux系统

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4350

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3653

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2913

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7210

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6842

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3913

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3405

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3639

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习