netstat -s 丢包数据如何重置?

netstat -s累计计数,不会自动清零(如何清零)。

# 查看特定端口socket情况
netstat -s | grep -i listen 716

times the listen queue of a socket overflowed 716 SYNs to LISTEN sockets dropped

1. 直接重启网络协议栈(最彻底)

会清零所有 TCP 统计计数。

1
2
systemctl restart networking   # Debian/Ubuntu
systemctl restart network # CentOS/RHEL

或者直接重启机器(粗暴但有效)。

2. 卸载/重新加载 tcp_diag 模块

netstat -s 数据来自 /proc/net/netstat,统计在内核协议栈里。
可以通过卸载再加载模块来清零:

1
2
3
4
5
6
# 查看模块
lsmod | grep tcp_diag
# 卸载
modprobe -r tcp_diag
# 重新加载
modprobe tcp_diag

⚠️ 不同内核版本有可能模块名是 inet_diag

3. 不重置,改用“差值”观察(推荐)

生产环境里通常 不建议清零,而是周期性采集,再计算差值。
比如:

1
2
3
4
5
6
7
8
# 第一次采集
netstat -s | grep -i listen > /tmp/netstat_listen_1

# 一段时间后
netstat -s | grep -i listen > /tmp/netstat_listen_2

# 对比差值
diff /tmp/netstat_listen_1 /tmp/netstat_listen_2

或者更专业的方式:

1
watch -n 5 "netstat -s | grep -i listen"

观察每 5 秒的新增次数。