VPS偶发丢包怎么查?softnet_stat与网络队列排障

网卡无错误不代表收包路径健康,softnet、backlog和CPU压力要一起看。
发布于
3

VPS偶发丢包、SYN重试或网络延迟抖动时,ip -s link没有明显错误并不能排除本机收包路径拥塞。数据包还要经过软中断和backlog队列;CPU被限流、软中断处理不及时或突发流量超过队列能力,都可能导致丢弃。

保存接口、CPU与softnet采样

ip -s link
ss -s
cat /proc/pressure/cpu
cat /proc/net/softnet_stat

softnet_stat字段含义依内核版本而定,通常要关注处理包数、丢弃包数和time squeeze等字段。先确认发行版内核文档,再按固定间隔计算增量。

看backlog与SYN队列

sysctl net.core.netdev_max_backlog
sysctl net.ipv4.tcp_max_syn_backlog
sysctl net.ipv4.tcp_syncookies

这些参数影响排队和SYN处理,但调大不等于解决瓶颈。真正问题可能是CPU、应用accept速度、连接跟踪或云平台限额;先记录当前值和业务基线。

区分本机、云平台和目标路径

  • softnet丢弃或time squeeze增长,同时CPU PSI、steal或throttling升高,更像本机处理拥塞。
  • SYN_RECV和应用accept队列增长,说明监听或线程处理不足。
  • softnet稳定而多处探测和云平台出口监控异常,更像外部路径问题。
  • 包已到达但线程、锁或I/O阻塞,属于应用性能瓶颈。

对自有服务记录连接建立时间、SYN重传、accept队列、业务P95和内核计数增量,不要只用一次Ping下结论。

低风险处理顺序

  1. 错峰或降低非关键并发,确认丢包是否与峰值同步。
  2. 检查CPU配额、steal、I/O等待和服务线程数。
  3. 确认云安全组、网卡队列与云平台网络事件。
  4. 维护窗口小幅调整backlog并做对照采样。
  5. 若计数继续增长,回滚参数并向云平台提交证据。

不要为了掩盖丢包关闭SYN cookies、无限增大队列或开放更多端口,这些做法可能扩大资源消耗和攻击面。

验收清单

  1. softnet字段与内核版本相符,使用时间增量比较。
  2. CPU压力、cgroup限流、监听队列和业务延迟同时记录。
  3. 本机收包、云平台出口和目标端路径有分层对照。
  4. 参数调整有基线、维护窗口和回滚值。
  5. 最终用真实业务协议和受控外部探测验证,而非只看Ping。

常见问题(FAQ)

网卡统计没有drop,为什么仍可能丢包?
数据包还可能在Linux软中断、backlog或监听队列阶段被丢弃,这些不一定反映在硬件网卡统计中。
softnet_stat字段能直接套用网上脚本吗?
不建议。字段含义和内核版本有关,应先查本机文档,再按固定间隔计算增量。
把netdev_max_backlog调大就能解决丢包吗?
不一定。队列只是缓冲,瓶颈可能在CPU、应用accept、连接跟踪或云平台限额;应先建立基线并小步验证。
为什么不建议关闭SYN cookies?
在突发连接或半连接压力下,关闭它可能扩大资源消耗和攻击面,应结合服务容量、来源控制和云平台策略处理。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600

VPS用着用着突然变卡,网站打开要好几秒、SSH敲命令有明显延迟——这种情况比完全断连更难排查。不是挂了,是慢了。本文用四个命令分别定位CPU、内存、磁盘IO和网络的瓶颈,告诉你性能卡在哪个环节。 排查前的第一步:确认不是自己的网络问题 很