0

0

Linux 网络丢包的排查流程

舞姬之光

舞姬之光

发布时间:2026-01-23 20:34:35

|

675人浏览过

|

来源于php中文网

原创

先检查网卡硬件与驱动丢包:用ethtool查link、speed、duplex及rx_errors/rx_dropped/rx_over_errors;rx_dropped涨多因napi慢或中断风暴,rx_over_errors升则ring buffer溢出;再查/proc/net/dev和ethtool -s确认;虚拟网卡rx_missed_errors升说明vcpu过载;接着排查tc/qdisc是否人为丢包,用tc qdisc show和tc -s qdisc show验证,误配需tc qdisc del;tcpdump应在eth0、lo、any三处抓包定位链路段,注意offload影响;最后排查conntrack表满(conntrack -s看insert_failed)和udp接收缓冲区溢出(rmem_max与recv频率不匹配)。

linux 网络丢包的排查流程

先看网卡硬件和驱动有没有在 silently 丢包

很多丢包根本没进协议,压根不会被 tcpdump 捕获——比如光模块故障、协商速率不匹配、Ring Buffer 溢出。别急着抓包,先跑:ethtool eth0,重点盯三项:Link detected: yes(物理连通)、Speed:Duplex:(是否全双工+速率一致)、rx_errors / rx_dropped / rx_over_errors。其中 rx_dropped 持续涨,大概率是 NAPI 调度慢或中断风暴;rx_over_errors 上升,则基本坐实 Ring Buffer 溢出。

补充验证命令:cat /proc/net/devRx-DRPRx-OVR 列;ethtool -S eth0 | grep -i "drop\|over\|buffer" 查更细的驱动级计数器(如 rx_no_buffer_count)。注意:虚拟网卡(如 virtio)的 rx_missed_errors 上升,往往意味着 vCPU 处理不过来,不是网线问题。

检查 tc/qdisc 是否在主动模拟丢包

这是最常被忽略的“伪丢包”来源——你看到丢包,其实是人为配置的。运行:tc qdisc show dev eth0。如果输出里带 netemloss 5% 这类字样,立刻确认:这不是故障,是测试/限流策略。比如常见错误配置:tc qdisc add dev eth0 root netem loss 10%,它会让所有出向包无差别丢 10%,且 /proc/net/dev 统计里完全不体现。

排查要点:

  • tc -s qdisc show dev eth0-s 才能看到真实丢包计数(如 dropped 42
  • 若确认是误配,删掉用:tc qdisc del dev eth0 root
  • 注意:容器网络(如 CNI 插件)也可能在 host interface 上挂 tc 规则,别只查容器内网卡

tcpdump 定位丢包发生位置

抓包不是万能,但位置错了就全白忙。关键原则:在哪抓,决定了你能排除哪段链路。

三处必试位置:

华友协同办公自动化OA系统
华友协同办公自动化OA系统

华友协同办公管理系统(华友OA),基于微软最新的.net 2.0平台和SQL Server数据库,集成强大的Ajax技术,采用多层分布式架构,实现统一办公平台,功能强大、价格便宜,是适用于企事业单位的通用型网络协同办公系统。 系统秉承协同办公的思想,集成即时通讯、日记管理、通知管理、邮件管理、新闻、考勤管理、短信管理、个人文件柜、日程安排、工作计划、工作日清、通讯录、公文流转、论坛、在线调查、

下载
  • tcpdump -i eth0 -n -t -S port 8080:网卡入口。若这里就没收到 SYN,问题在物理链路或上游设备
  • tcpdump -i lo -n -t -S port 8080:本地回环。若这里能抓到请求但服务没响应,说明应用层或 socket 接收队列已满
  • tcpdump -i any -n -t -S 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0':快速过滤握手包,看 SYN 有无 ACK 回复、是否出现重复 ACK 或 RST

特别注意:tcpdump 默认看不到 offload 后的分段(如 GSO/TSO),可能误判为“大包丢弃”。加 -K 参数禁用 checksum offload 可缓解。

别漏掉 conntrack 和 socket 缓冲区溢出

这两类丢包无声无息,不触发 ICMP,客户端只感知为超时或重连失败。

conntrack 表满会导致新建连接静默丢弃:

  • 查状态:conntrack -S,紧盯 insert_failed 是否持续增长
  • 临时缓解:echo 65536 > /proc/sys/net/netfilter/nf_conntrack_max
  • 根本解法:优化连接生命周期,或改用 NOTRACK 规则绕过 conntrack(仅限可信内网)

UDP 丢包高频原因是接收缓冲区溢出:

  • 查当前值:cat /proc/sys/net/core/rmem_max 和应用实际 setsockopt(SO_RCVBUF)
  • UDP 应用必须异步读取,否则缓冲区积压后新包直接被内核 dropnetstat -su 里的 packet receive errors 会涨)
  • 不要只调大 rmem_max,还要确保应用调用 recv() 频率 ≥ 数据到达速率

真正难缠的丢包,往往藏在「看起来一切正常」的地方:tc 规则开着没人记得、conntrack 表悄悄满了、应用用阻塞式 UDP recv 坐等超时……工具只是镜子,照见的是配置和设计里的盲点。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

443

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

605

2023.08.10

go中interface用法
go中interface用法

本专题整合了go语言中int相关内容,阅读专题下面的文章了解更多详细内容。

78

2025.09.10

tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

126

2023.07.25

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

302

2023.08.08

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

399

2024.11.14

磁盘配额是什么
磁盘配额是什么

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

1564

2023.06.21

如何安装LINUX
如何安装LINUX

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

716

2023.06.29

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.5万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号