首页/系统/Linux 运维命令速查/nstat 内核网络计数器
网络命令82 条

nstat 内核网络计数器

把内核网络计数器按「增量」展示:重传、UDP 错误、连接失败原因等,做网络体检与故障归因。

Linux 运维命令速查系统更新于 2026-10-13

nstat 是什么

nstat 把内核网络计数器按增量方式展示,数据来源是 /proc/net/snmp 与 /proc/net/netstat。默认输出的是「距上次运行以来的增量」,重传、UDP 错误、连接失败原因都能看到,做网络体检与故障归因时比直接读 procfs 舒服得多。

基本信息

所属iproute2 软件包
语法nstat / nstat -az
记忆点默认是增量,-a 绝对值,-z 包含零值项
数据来源/proc/net/snmp 与 /proc/net/netstat

典型使用场景

  • 网络体检:看重传、超时、连接失败是否异常增长
  • 抖动后归因:区分重传、乱序与丢包方向
  • 窗口对比:间隔采集两次做差,定位故障时段
  • 排查 UDP 应用丢包:看接收错误与端口不可达
  • 变更前后对比计数器,评估网络质量变化
  • 与 ss、sar 交叉验证同一时段的网络问题

常用示例

常用示例
nstat                                 # 显示距上次运行的增量
nstat -az | head -30                  # 绝对值并包含零值项
nstat -az | grep -E 'TcpRetransSegs|TcpOutSegs|TcpAttemptFails'   # 关键项
nstat -az > /tmp/n1; sleep 300; nstat -az > /tmp/n2; diff /tmp/n1 /tmp/n2 | head -20
nstat -r 5                            # 每 5 秒刷新一次(版本相关)
grep -E 'TcpRetransSegs|TcpOutSegs' /proc/net/netstat | head   # 直接读源数据
sar -n ETCP 1 5                       # 另一个视角的重传统计

关键计数器读法

计数器含义异常表现
TcpRetransSegs重传段数增长快说明丢包或链路质量差
TcpOutSegs发送段总数计算重传率时的分母
TcpAttemptFails连接尝试失败次数对端拒绝或网络不可达
TcpExtListenDrops监听队列溢出丢弃连接突增或 backlog 过小
UdpInErrorsUDP 接收错误数排查应用丢包的起点
重传率大约等于 TcpRetransSegs 增量除以 TcpOutSegs 增量。持续超过百分之一就值得顺着丢包方向去查,单看一个数字没有意义。
增量是相对「上次运行」计算的:两次对比必须用同一身份执行,因为 root 与普通用户各自保存历史,用不同身份跑出来的增量不可比。
计数器随内核启动累计、重启后归零。做长期基线要定期采集并保存历史,别把单次数值当成绝对值来解读。
容器内看到的计数器属于独立的网络命名空间,与宿主机视角不同:同一台机器上排查容器网络问题,要在对应命名空间内执行 nstat,否则数字对不上。

易错点

  • 用不同身份跑两次 nstat 做对比:历史文件分开,增量结果没有可比性
  • 把默认输出当绝对值:它是相对上次运行的增量,容易得出错误结论
  • 只看重传数不看发送总数:缺少分母就无法判断严重程度
  • 单次采样就下结论:计数器增长是常态,需要窗口对比才有意义

数据来源与参考

  • man 8 nstat(iproute2 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌