首页/系统/Linux 内核与性能调优速查/nstat 差值观测协议计数
网络栈调优98 条

nstat 差值观测协议计数

nstat 为内核网络计数器提供名称并按差值展示, 比原始 snmp 文件更适合连续观测。

nstat 的差值观测

nstat 为内核网络计数器补上可读名称,并按差值方式展示,比直接读原始文件更适合连续观测。它既能输出累计值,也能给出自上次运行以来的增量,配合 -z 还会把零值计数器一并列出,便于发现新出现的异常项。

基本信息

查看全部nstat -a 输出指定计数器的累计值
包含零值项nstat -z,便于发现新增计数器
基线采集nstat -az > /tmp/net-before.txt
差值对比nstat -az | diff /tmp/net-before.txt -
数据来源/proc/net/snmp 与 /proc/net/netstat 等协议计数文件

典型使用场景

  • 网络调优前后对比,确认哪些计数器发生了变化
  • 持续观测 Drop、Retrans、Overflow 类指标是否增长
  • 故障复盘时用差值还原时间段内的异常计数
  • 自建采集时以名称为准,避免依赖文件列序
  • 核对其他工具输出的口径是否与内核原始计数一致

基线与对比

基线与对比
nstat -az > /tmp/net-before.txt          # 变更前留档
sleep 60
nstat -az | diff /tmp/net-before.txt - | head -30   # 只看变化的行
nstat -az | grep -iE 'drop|retrans|overflow'       # 关注异常类计数器

重点关注的计数器

类别典型项指向
重传RetransSegs链路丢包或对端响应慢
丢弃各类 Drop 计数协议栈或队列容量问题
溢出Overflow 类计数缓冲或队列不足
错误InErrs 等链路质量或网卡问题

使用注意

  • 采样间隔过短时噪声会掩盖趋势,间隔应覆盖业务波动周期
  • 配合 -z 使用,否则新增的零值计数器不会被发现
  • 做对比时保持工具版本与调用方式一致,避免口径漂移
  • 把结论与设备侧、应用侧指标相互印证
  • 长期观测应把结果落到时间序列系统,避免只靠手工 diff 复盘
nstat 的差值依赖上次运行留下的状态,若中间系统重启或文件被清理,增量语义会失效,此时应先确认自己的采样链路是否完整。
diff 直接输出没有排序,行数多时可读性很差,建议配合过滤或排序后再看,避免在噪声中漏掉真正增长的计数器。
计数器名称在不同内核版本之间可能新增或重命名,长期采集方案应记录内核版本,避免升级后指标口径悄悄变化而无人察觉。

易错点

  • diff 输出不做排序与过滤,噪声中难以看清真正增长的项
  • 采样间隔过短,噪声掩盖长期趋势
  • 不用 -z,导致新增的零值计数器完全看不到
  • 忽略状态文件或重启影响,把失效的差值与真实增量混为一谈

数据来源与参考

  • man nstat
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌