我想获得总网络 I/O 统计信息。使用dstat -n
命令我得到了这个输出:
-net/total-
recv send
0 0
7334B 7380B
7084B 6948B
7411B 6672B
7030B 6828B
7130B 6606B
但是使用命令sudo netstat
命令我得到了这个输出:
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 kafka1:37530 kafka2:9092 ESTABLISHED
tcp 0 264 kafka1:ssh 192.168.1.110:56686 ESTABLISHED
tcp 0 0 kafka1:9092 kafka2:55146 ESTABLISHED
tcp 0 0 kafka1:9092 kafka3:46216 ESTABLISHED
tcp 0 0 kafka1:49042 kafka3:9092 ESTABLISHED
tcp 0 0 kafka1:58414 zookeeper1:2181 ESTABLISHED
为什么 的输出dstat
远大于 的(聚合)输出netstat
?哪一个是真的?
我想你误解了什么
netstat
。netstat
列出打开的网络端口/流/套接字和活动连接。虽然这与 IO 相关,但它不计算发送/接收字节数。我不知道你对聚合输出的意思,但你的主机名kafka1和kafka2 后面的数字是端口,而不是字节。它可以做的唯一可以让您了解吞吐量的事情是计数数据包。
如果你的意思是Recv-Q和Send-Q
手册页这样说:
Recv-Q已
建立:连接到此套接字的用户程序未复制的字节数。
Listening:从 Kernel 2.6.18 开始,此列包含当前的 syn backlog。
Send-Q已
建立:远程主机未确认的字节数。
Listening:从 Kernel 2.6.18 开始,此列包含 syn backlog 的最大大小。