netstat -s 是诊断网络协议栈异常的底层工具,汇总tcp/udp/icmp/ip等协议收发、错误、丢包、重传等统计;需结合基线对比和周期采样分析增量趋势。

netstat -s 是诊断网络协议栈异常的底层利器,它不显示连接状态,而是汇总内核对各协议(TCP、UDP、ICMP、IP 等)的收发、错误、丢包、重传等统计计数。当出现连接超时、吞吐下降、间歇性断连却无明显连接异常时,netstat -s 能快速暴露协议栈内部瓶颈或错误模式。
TCP 统计重点看重传与连接失败
TCP 异常最常见于重传激增、连接建立失败或异常关闭。执行 netstat -s -t 后重点关注:
- segments retransmitted:持续增长说明链路丢包或接收端 ACK 延迟/丢失,需结合 ping、mtr 判断路径质量
- connection resets received / connection resets sent:突增可能源于对端异常终止、防火墙拦截、或本端 socket 被强制关闭(如进程崩溃)
- failed connection attempts:大量失败且伴随 “no route to host” 或 “connection refused”,需检查路由、目标端口监听状态及防火墙策略
- embryonic connections dropped:SYN 队列溢出(syn backlog full),常见于 SYN Flood 攻击或 net.ipv4.tcp_max_syn_backlog 设置过小
UDP 统计聚焦接收错误与丢包
UDP 无重传机制,异常往往表现为静默丢包。运行 netstat -s -u 查看:
- packet receive errors:非零值通常指向网卡驱动问题、DMA 错误或内核内存不足(如 skbuff 分配失败)
- receive buffer errors:表示 UDP socket 接收缓冲区满,数据被内核直接丢弃;可通过 ss -uln 查看 Recv-Q 是否长期非零,并调大 net.core.rmem_default
- in errors / no ports:收到目的端口无监听进程的数据包,常见于服务未启动、端口绑定错误或容器网络配置偏差
IP 层统计揭示转发与分片问题
执行 netstat -s -i(接口级)或 netstat -s -r(路由相关)可辅助定位更底层问题:
- fragments dropped:IP 分片重组失败,多因内存紧张或 net.ipv4.ipfrag_high_thresh 设置过低
- packets forwarded:非零且持续增长,说明主机启用了 IP 转发;若非预期行为,应检查 net.ipv4.ip_forward 值
- input/output errors/dropped:网卡驱动或硬件问题信号,需配合 ethtool -S eth0 对照查看 rx/tx 错误计数
对比基线与周期采样更有效
netstat -s 输出是自系统启动累计值,单次查看意义有限。建议:
- 在业务正常时段记录一次快照作为基线(如保存为 netstat-s-baseline.txt)
- 异常发生时再次采集,用 diff 或简单减法计算增量变化,聚焦增长最快的几项
- 对关键指标(如 TCP retransmits)做定时轮询(如每 10 秒),绘图观察趋势,避免将偶发抖动误判为故障










