服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-15 更新于 2026-09-15 简米科技 3,063 字 7 分钟阅读

网络丢包时服务器侧要排查什么,服务器丢包严重怎么排查

导读服务器侧排查丢包,核心不是盯着服务器发呆,而是先用ping和mtr把丢包路段切成“客户端链路、接入设备、服务器网卡、内核协议栈”四段,逐一排除,下面这四步按顺序走完,问题基本能从一堆可能性里被逼出来,网络丢包服务器侧排查:先确认丢包发生在哪一跳很多人一收到丢包告警,就急着登录服务器抓包,这个习惯得改,抓包只能证……

服务器侧排查丢包,核心不是盯着服务器发呆,而是先用ping和mtr把丢包路段切成“客户端链路、接入设备、服务器网卡、内核协议栈”四段,逐一排除。下面这四步按顺序走完,问题基本能从一堆可能性里被逼出来。

网络丢包服务器侧排查:先确认丢包发生在哪一跳

很多人一收到丢包告警,就急着登录服务器抓包,这个习惯得改。抓包只能证明“应用层确实丢了”,证明不了“丢在哪一层”,甚至会让你被海量流量淹没。

先把范围切清楚,需要做三组基准测试:

  • ping 127.0.0.1丢包说明本机协议栈已坏,概率极低,但值得花十秒排除。
  • ping 网关丢包说明二层链路或本机网卡有问题。
  • ping 公网业务IP丢包说明问题出在三层以上路径。

然后是mtr,这是判断丢包路段最有用的工具,执行 mtr -rw 目标IP,它会列出每一跳的丢包率,这里有个容易误判的细节:最后一跳丢包率高,往往不代表服务器有问题,而是路由器不回应探测包,真正要看的是起始几跳的丢包率,以及整条路径丢包率是否呈“突然升高”的断层。

如果从电信、联通、移动多个网络分别测同一个服务器,丢包现象一致,那问题大概率在服务器或靠近服务器的接入链路,如果只有某一个地区丢,问题多半在中间运营商互联节点。

网络丢包严重怎么排查:把带宽和链路状态盘一遍

确认了丢包路段之后,网络丢包严重怎么排查这个问题就落到两个词上:带宽打满链路劣化

先查带宽,登录服务器执行 sar -n DEV 2 5,观察流量是否接近网卡上限,如果是,再用 iftop -i eth0 -n 按IP排序,找出谁是流量大头,常见场景是备份任务在高峰期跑满带宽,或是被某台失陷主机当作肉鸡对外发包,把出口挤爆了。

网络丢包时服务器侧要排查什么,服务器丢包严重怎么排查

接着查链路质量。爬上交换机,看端口统计里的CRC错误、FCS错误、runts和丢包计数,这几个数值只要在上涨,物理链路或光模块大概率在闹脾气。

现象特征 排查方向 高频根因
小包通、大包丢 MTU路径黑洞 防火墙拦截ICMP不可达、中间设备MTU不一致
白天正常、深夜丢 光模块/光纤衰耗 光模块DDM告警、光纤接头污染
双向等比例丢包 物理链路 网线或光纤质量差、端口协商异常
连接一多就开始丢 设备转发能力 交换机缓存不足、QoS队列被占满

MTU问题有个经典特征:小包通畅,需要分片的大包直接消失,可以用 ping -M do -s 1472 目标IP 测试,如果通,说明路径MTU至少1500,被防火墙拦截ICMP时,服务器收不到“需要分片”的通知,就会一直硬塞大包,被动丢包,行业共识认为,跨地域链路中“小包通大包不通”的故障,绝大多数是MTU分片机制和ICMP策略共同造成的。

云服务器丢包原因:服务器本地的几个隐蔽角落

物理链路查完,毛病还在,就得把注意力搬回服务器本身,云服务器丢包原因里,网卡软队列和内核连接跟踪表两处最容易出事。

先看网卡层,执行 ip -s link show eth0,注意RX/TX的errors、dropped、overruns三个计数,overruns增长说明网卡环形队列(ring buffer)满了,数据包根本没进内核就被丢了,接着用 ethtool -S eth0 | grep -Ei 'drop|error|miss' 查详细原因,重点关注rx_missed和rx_fifo_errors。

如果队列溢出频繁,可以调大ring buffer:ethtool -G eth0 rx 4096,但这不是根治方案,得检查CPU软中断分配。

网络丢包时服务器侧要排查什么,服务器丢包严重怎么排查

top 里看si(软中断占用),如果某个核心的si飙到高位,其他核心闲置,就是中断分配不均,解决思路是启用网卡多队列(RSS),或者打开RPS让中断分摊到多个CPU核心。

再看内核协议栈,执行 netstat -s | grep -i listen,如果listenOverflows在增长,说明TCP半连接或全连接队列溢出,客户端请求在握手阶段就被内核丢弃,业务表现为连接建立慢、偶发超时,但ping一切正常,业内专家指出,云服务器丢包大多数时候并不在物理网卡,而是宿主机的虚拟交换机软队列或连接跟踪表先扛不住。

连接跟踪表是云服务器另一个常见丢包点,高并发场景下,nf_conntrack 表会被打满,新连接直接被丢弃,表现为ping通但TCP建连失败,执行 sysctl net.netfilter.nf_conntrack_countsysctl net.netfilter.nf_conntrack_max 对比,如果当前值接近上限,要么调大max,要么排查是否有大量异常TIME_WAIT连接堆积。

服务器丢包排查命令:一套组合拳逐层确认

实操环节,所有命令可以按顺序串成一套动作,照着敲就行:

  1. 三层定位ping -i 0.2 -c 100 网关IP,观察丢包是否稳定均匀,稳定丢包多半是链路劣化,间歇丢包更像拥塞。
  2. 接口统计ip -s link show eth0,看dropped和errors。
  3. 网卡细节ethtool -S eth0 | grep -Ei 'drop|error|miss',区分rx和tx方向。
  4. 队列溢出ethtool -g eth0 看当前ring buffer值。
  5. 内核统计netstat -s | grep -Ei 'drop|retrans|listen',查TCP重传和队列溢出。
  6. 内核丢包观测:执行 dropwatch -l kas,输入start后开始实时跟踪,close停止,它能告诉丢包发生在哪个内核函数路径上,比如是协议栈处理不过来,还是socket缓冲区被挤爆。
  7. 网络丢包时服务器侧要排查什么,服务器丢包严重怎么排查

  8. 抓包验证tcpdump -i eth0 -w /tmp/drop.pcap,用Wireshark打开后看DUP ACK和乱序包,如果大量DUP ACK出现,说明链路里确实有包没到;如果重传很少,那“丢包”很可能只是应用层响应慢造成的错觉。

这套组合拳的核心逻辑是从接口层往内核层收窄,最后才动抓包工具,直接抓包容易被流量淹没,反而不容易定位。

据统计,自建机房中相当一部分丢包问题源于网卡驱动与固件版本不兼容,表现特征是:ping不超时,丢包率稳定在很低的水平,但吞吐上不去,遇到这类情况,更新网卡驱动往往比调一堆内核参数更管用。

关于网络丢包服务器侧排查的高频疑问

问:ping本机不丢,ping网关就丢,问题出在哪?

大概率在二层链路,检查网线或光纤接口是否松动,用 ethtool eth0 查看协商速率,需要确认是否出现半双工状态,两端速率不匹配也会造成低速率丢包,多数情况下,换一根网线或强制固定两端速率就能恢复。

问:游戏服务器掉线排查时,丢包率不高但玩家频繁掉线,是什么原因?

关注TCP层,丢包率不高却频繁掉线,通常不是物理链路问题,而是服务器连接数打满,或者负载均衡后端健康检查失败导致节点被摘除,抓包观察SYN包和SYN-ACK包的交互即可确认,没有SYN-ACK响应往往是连接跟踪表满,有SYN-ACK但连接还是断,则是应用层超时设置过短。

问:服务器丢包率多少算正常?

内网链路的丢包率应该无限接近0,公网环境下,连续ping 1000个包,丢包率在0.1%以内可视为正常链路波动,一旦超过1%,业务就会明显感知,游戏和实时音视频这类场景超过0.5%就会有卡顿。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱