dstat 和 netstat 命令中的不同网络 IO

dstat 和 netstat 命令中的不同网络 IO

我想获取总网络 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?哪一个是真实的?

答案1

我想你误解netstat了什么。

netstat列出打开的网络端口/流/套接字和活动连接。虽然这与 IO 相关,但它不计算发送/接收的字节数。

我不知道你的意思总计的输出但主机名后面的数字kafka1kafka2是端口,而不是字节。它唯一能让你了解吞吐量的事情就是计算数据包数量。

如果你的意思是接收请求发送-Q

手册页上这样说:

接收请求
已确立的:连接到此套接字的用户程序未复制的字节数。
听力:自内核 2.6.18 起,此列包含当前的 syn 积压。

发送-Q
已确立的:远程主机未确认的字节数。
听力:自内核 2.6.18 起,此列包含 syn backlog 的最大大小。

相关内容