使用nicstat监控网卡使用情况
标准的系统工具通常只能显示某个网络接口发送和接收的数据报数和字节数,所以它们在监控网络流量方面差强人意。虽然这些信息有用,但无法告诉我们网络是没有充分利用,还是过度使用。
Unix系统监控网络的基本工具是netstat(大多数 Linux发行版中还没有包括netstat,必须单独获得)。Windows 上则可以在脚本中使用typeperf,监控网络使用率。
1)下载nicstat
https://sourceforge.net/projects/nicstat/files/
2)安装nicstat
按照REAME.txt中的说明安装
make install出现错误
修改Makefile文件,修改编译环境为64
编译成功
2)nicstat的使用
nicstat -i eno16777736 1
内容 | 说明 |
---|---|
Int | 网络接口设备名 |
rKb/s | 每秒读取的KB数 |
wKb/s | 每秒写入的KB数 |
rPk/s | 每秒读取的包数 |
wPk/s | 每秒写入的包数 |
rAvs | 每次读取的平均字节数 |
wAvs | 每次写入的平均字节数 |
%util | 网络接口使用率 |
Sat | 饱和度 |
注:重点关注%util,即网卡的使用率。
3)关于网卡使用率(%util)的计算
1000兆位网络每秒处理125兆字节(MB)。
(接口的读取速率:88.85KB/s + 接口的写入速率:1.54KB/s) / 1024 = 0.08MB/s
使用率:0.08MB/s ÷ 125MB/s = 0.00064 ≈ 0.064%
计算结果基本与工具相同。
注意:一般工具报告的单位是字节/秒(Bps),但是带宽的单位是位/秒(bps)。
网络无法支持100%的使用率。对本地以太局域网来说,承受的网络使用率超过40%就意味着接口饱和了。如果网络是包交换或使用不同的传输介质,网络使用率的最大值就可能会不同,因此最好是评估网络架构之后再确定合适的值。这个值与Java无关,只是简单利用网络参数和操作系统接口。
1.对基于网络的应用来说,务必要监控网络以确保它不是瓶颈。
2.往网络写数据的应用遇到瓶颈,可能是因为写数据的效率太低(吞吐量太低),也可能是因为写入了太多的数据((吞吐量太高)。