Linux怎么查看网络接口的丢包统计 Linux下ip -s link详解
Linux怎么查看网络接口的丢包统计 Linux下ip -s link详解

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
说到网络排查,丢包绝对是个让人头疼的经典问题。网络时好时坏,应用响应慢,很多时候根源都在这里。那么,在Linux系统里,我们怎么快速、准确地定位丢包发生在哪个环节呢?今天就来深入聊聊那个最直接、也最强大的工具:ip -s link。
ip -s link 输出里哪些字段代表丢包
直接运行 ip -s link show eth0,你会看到一大堆统计数字。别慌,真正需要你“火眼金睛”盯着的,其实就集中在接收(RX)和发送(TX)的几项关键指标里。它们可不是一个叫“丢包”的单一字段,而是分散在各个环节的“告密者”:
RX: ... dropped:这是内核层面的主动丢弃。简单说,就是数据包已经到了Linux内核,但因为接收队列满了,或者系统处理不过来(比如软中断太忙、CPU负载过高),内核只好“忍痛割爱”。这通常指向系统性能瓶颈。RX: ... overrun:这个更底层,是网卡Ring Buffer溢出的标志。想象一下,网卡接收数据的速度(DMA写入)像瀑布一样快,而内核取走数据的速度像小溪流,结果就是缓冲区爆满,后来的包直接被硬件丢弃。这往往意味着流量突发超过了系统处理能力。RX: ... errors:物理层错误。比如CRC校验失败、帧长度不对等。这类丢包通常指向硬件问题,像网线接触不良、光模块光衰过大、端口协商失败等。TX: ... dropped:发送侧的丢弃。原因可能是发送队列满了,或者是内核的流量控制(qdisc)策略触发了丢包(比如限速)。不过要注意,通过tc命令配置的复杂丢包策略,不一定体现在这里。
记住一个原则:执行命令后,重点就看这四列数字——只要它们不是零,并且在持续增长,那就是丢包正在发生的铁证。
为什么 ifconfig 的 dropped 和 ip -s link 的 dropped 不一样
很多朋友习惯用老牌的 ifconfig 命令,但发现它显示的 RX dropped 和 ip -s link 里的对不上。这不是bug,而是统计口径不同。
ifconfig 报告的 dropped,更多反映的是内核在分配 sk_buff(套接字缓冲区)失败,或者应用层的socket接收缓冲区已满时的丢弃。而 ip -s link 的 dropped 统计更底层,属于网络设备子系统(netdev),涵盖了NAPI处理机制中的丢弃情况。可以说,ip -s link 的视角更贴近真实网卡的行为。
- 如果你看到
ifconfig显示有丢包,但ip -s link的dropped却是0,那问题大概率出在应用层。可以检查一下socket缓冲区:netstat -s -u | grep "receive buffer errors"。 - 反过来,如果
ip -s link的overrun很高,但ifconfig里没有对应字段——这很正常,因为ifconfig根本不统计Ring Buffer溢出这种硬件层面的丢包。
ethtool -S 和 ip -s link 的丢包字段怎么对应
想要更细粒度的洞察?ethtool -S eth0 命令能提供驱动级别的详细统计。但它的字段名因网卡驱动而异,和 ip -s link 的映射关系不是简单的一一对应:
ip -s link里的overrun,大致对应ethtool -S输出中的rx_over_errors或rx_fifo_errors。具体是哪个,得看驱动。比如ixgbe驱动常用rx_fifo_errors,而e1000e驱动则用rx_over_errors。ip -s link里的errors,通常是ethtool -S里各种物理层错误的总和,比如rx_crc_errors、rx_frame_errors等。ip -s link里的dropped,有时能对应到ethtool -S的rx_missed_errors(部分驱动),但更可靠的方法是结合查看/proc/net/softnet_stat文件的第二列来验证。
所以,不必死磕字段名的完全匹配。更实用的方法是看趋势:在同一个时间点,反复执行几次 ip -s link,如果发现 overrun 或 dropped 的数值在跳动增长,那问题就在持续发生,这才是关键。
tc qdisc 丢包不会出现在 ip -s link 统计里
这一点至关重要,却最容易被忽略:由 tc(Traffic Control)工具配置的丢包策略,是完全绕开网卡统计体系的。也就是说,即使你的 ip -s link 所有字段都是完美的0,网络上依然可能因为TC规则在大量丢包。
- 怎么检查? 运行
tc qdisc show dev eth0。仔细看输出里有没有loss(丢包)、limit(队列限制)、rate(限速)、burst(突发)这类关键词。 - 典型“坑”:在测试环境里,为了模拟网络异常,可能会加上一条
tc qdisc add dev eth0 root netem loss 10%,结果上线时忘记清理,导致生产环境“无故”丢包。 - 如何确认影响? 可以做个简单测试:用
hping3 -c 10 -S <目标IP>发送10个SYN包,同时在同机用tcpdump -i eth0 port 80抓包。对比发出的包数和抓到的包数,就能直观看到TC规则是否在生效丢包。
因此,一个完整的丢包排查流程,第一步就应该是 tc qdisc show。因为它配置的丢包无声无息,却又常常是问题的元凶,可别让它成了漏网之鱼。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Linux如何查看进程占用的物理内存 区分RSS与VSS
Linux如何查看进程占用的物理内存 区分RSS与VSS 在Linux系统里排查内存问题时,一个核心动作就是查看进程到底占用了多少物理内存。但这事儿吧,工具不少,概念也多,稍不留神就可能看错数字、误解含义。今天咱们就来理清几个关键工具和概念,特别是如何准确查看RSS,以及它和VSS到底有什么区别。
Linux怎么安装Jenkins并配置Java环境 Linux自动化部署实战详解
Linux怎么安装Jenkins并配置Ja va环境 Linux自动化部署实战详解 在CentOS 8或者Rocky Linux 8上部署Jenkins,第一步往往就决定了成败:ja va -version的输出必须是1 8,也就是JDK 8。如果版本不对,Jenkins要么启动失败,要么Web界面
Linux查看系统启动时间及运行时间 uptime命令详解
Linux系统启动时间:三种可靠查询方法与一个常见误区 在排查故障、分析性能或者单纯想知道服务器“活了多久”时,系统启动时间是个关键信息。但你知道吗?不同命令给出的结果,背后代表的意义可能截然不同。直接说结论:追求最快,用 uptime -s;追求最可靠,用 who -b;而默认的 uptime 命
如何解决 Win11 系统由于系统盘爆满导致的启动黑屏 紧急清理 C 盘方案
如何解决 Win11 系统由于系统盘爆满导致的启动黑屏 紧急清理 C 盘方案 如果你的 Windows 11 开机后直接黑屏,而之前又明显感觉到 C 盘已经“飘红”甚至完全塞满,那问题很可能就出在这里。系统关键文件没地方写、虚拟内存加载失败,或者引导程序运行异常,都会导致启动过程直接中断。别慌,下面
Linux如何通过命令行发送电子邮件 mailx配置【教程】
Linux命令行邮件发送:告别静默失败,搞定mailx的SMTP配置 很多朋友在Linux服务器上尝试用mail命令发邮件时,都遇到过同一个“幽灵”问题:命令执行了,没有报错,但邮件就是石沉大海,收件箱里永远等不到。问题根源其实很明确:直接使用mail命令向QQ、Gmail、163等外部邮箱发送,几
- 日榜
- 周榜
- 月榜
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程
热门话题

