我想获取总网络 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 相关,但它不计算发送/接收的字节数。
我不知道你的意思总计的输出但主机名后面的数字kafka1和kafka2是端口,而不是字节。它唯一能让你了解吞吐量的事情就是计算数据包数量。
如果你的意思是接收请求和发送-Q
手册页上这样说:
接收请求
已确立的:连接到此套接字的用户程序未复制的字节数。
听力:自内核 2.6.18 起,此列包含当前的 syn 积压。
发送-Q
已确立的:远程主机未确认的字节数。
听力:自内核 2.6.18 起,此列包含 syn backlog 的最大大小。