服务器网络丢包排查需分层定位:3%丢包率导致p99延迟激增但带宽仅35%,说明问题在网卡ring buffer溢出(ethtool -s查rx_dropped)、内核协议栈队列积压(ss/netstat查listenoverflows)、中间链路故障(mtr定位丢包跳点)或防火墙静默拦截icmp。

服务器网络丢包排查不是靠“ping一下看有没有丢”就能解决的,关键在于分层定位、逐级排除。3%的丢包率可能让P99延迟翻30倍,但带宽才用35%,说明问题不在链路饱和,而在某一层缓冲区溢出或配置失当。
网卡硬件层:先看驱动计数器是否溢出
这是最底层、最真实的丢包来源。
- 运行
ethtool -S eth0 | grep -E "rx_dropped|rx_missed_errors|rx_fifo_errors|rx_over_errors"-
rx_dropped > 0:Ring Buffer 满了,新包进不来 → 需调大 ring buffer 或启用 RPS -
rx_missed_errors持续增长:FIFO 溢出,多是驱动兼容性或网卡固件问题
-
- 查当前 ring buffer 大小:
ethtool -g eth0 - 若发现溢出,临时扩容(示例):
ethtool -G eth0 rx 4096 tx 4096
内核协议栈层:检查 socket 缓冲与队列积压
带宽空闲但丢包,大概率卡在这层。
宝塔面板11.3.0是一款针对Linux服务器设计的可视化管理工具,通过重构核心模块实现资源占用显著降低,尤其适合低配置服务器环境。它将复杂的命令行操作转化为直观的图形界面,帮助开发者快速完成网站部署、环境配置及日常运维工作,无需专业技术背景即可高效管理服务器。
- 查看 TCP 全连接队列和半连接队列是否满:
ss -s | grep -E "(listen|established)" netstat -s | grep -A 2 "SYN cookies"
-
listen overflow或syncookies sent高 → SYN backlog 不足或遭受泛洪
-
- 检查接收缓冲区是否持续打满:
cat /proc/net/snmp | grep -A 1 "TcpExt" | grep "ListenOverflows\|ListenDrops"
-
ListenOverflows增长 → 应用 accept 速度跟不上,需优化服务线程或调大net.core.somaxconn
-
中间链路与路由:用 mtr 定位故障跳点
丢包不一定在本机,可能是路径中某段不稳定。
- 执行
mtr --report --cycles=100 目标IP- 关注哪一跳开始出现丢包、延迟突增或抖动(Jitter)
- 若丢包集中在 ISP 骨干节点(如 AS4837、AS701),属运营商问题,需协调 BGP 调优或切换线路
- 补充验证:从多地(如北京、广州、海外 VPS)同时 mtr,确认是否区域性丢包
防火墙与安全策略:别让规则静默丢包
ICMP 丢包常被误判为网络问题,实则被拦截。
- 检查本地 iptables/nftables 是否 DROP ICMP:
iptables -L INPUT -n -v | grep icmp
- 云服务器务必确认安全组放行 ICMP 协议(不只是端口,协议类型要明确允许)
- 若使用 conntrack,检查是否因连接数超限导致新建连接被丢弃:
cat /proc/sys/net/netfilter/nf_conntrack_count cat /proc/sys/net/netfilter/nf_conntrack_max
不复杂但容易忽略










