持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天,点击查看活动详情
本篇文章继续分析在操作系统提供的工具命令上,我们能够得到哪些性能相关的问题。通常我们的应用都是需要网络的,网络的快慢基于服务器的带宽,而这个带宽是有限度的。所以我们需要针对网络流量进行监控。如果写入的数据总量超过带宽的极限,那么将导致整个应用的卡顿,甚至未响应。
网络使用率
nicstat安装
我们熟知的netstat不能很好地监控到网络流量,所以这里提供一个指标较为全面的监控工具。
下载方式如下:
wget http://nchc.dl.sourceforge.net/project/nicstat/nicstat-1.95.tar.gz
解压:
tar -zxvf nicstat-1.95.tar.gz
进入文件夹,拷贝文件:
[root@hecs-402944 opt]# cd nicstat-1.95
[root@hecs-402944 nicstat-1.95]# cp Makefile.Linux Makefile
编辑文件Makefile,将:
CFLAGS = $(COPT) $(CMODEL)
修改为:
CFLAGS = $(COPT)
编译并安装:
[root@hecs-402944 nicstat-1.95]# make && make install
gcc -O3 nicstat.c -o nicstat
mv nicstat `./nicstat.sh --bin-name`
gcc -O3 nicstat.c -o nicstat
sudo install -o root -g root -m 4511 `./nicstat.sh --bin-name` /usr/local/bin/nicstat
sudo install -o bin -g bin -m 555 enicstat /usr/local/bin
sudo install -o bin -g bin -m 444 nicstat.1 /usr/local/share/man/man1/nicstat.1
验证:
[root@hecs-402944 nicstat-1.95]# nicstat
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
09:37:34 eth0 0.57 0.69 2.42 4.51 241.3 155.6 0.00 0.00
09:37:34 lo 0.02 0.02 0.08 0.08 198.6 198.6 0.00 0.00
nicstat使用
关于详细的命令可以使用nicstat -help查看。
每五秒打印一次,共打印3次:
[root@hecs-402944 nicstat-1.95]# nicstat 5 3
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
09:46:22 eth0 0.57 0.69 2.42 4.51 241.2 155.6 0.00 0.00
09:46:22 lo 0.02 0.02 0.08 0.08 198.6 198.6 0.00 0.00
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
09:46:27 eth0 0.97 4.16 11.99 20.98 82.73 202.9 0.00 0.00
09:46:27 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
09:46:32 eth0 1.14 5.29 13.80 20.20 84.67 268.4 0.00 0.00
09:46:32 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
如上所示的每个列的含义如下所示:
- Time:表示当前时间
- Int : 网卡名称
- rKB/s : 每秒接收到的KB
- wKB/s : 每秒写的KB
- rPk/s : 每秒接收到的数据包数
- wPk/s : 每秒写的数据包数
- rAvs : 接收到的数据包平均大小
- wAvs : 传输的数据包平均大小
- %Util : 网络接口使用率
- Sat : 网络接口每秒的错误数(网络接口饱和度)。可以使用-x参数去查询明细
使用率如何计算呢?
我们的网络带宽的单位是位/秒(bps),而上述得每秒写入和读取单位是KB,我的服务器带宽只有1M,所以只有128KB的最大上传下载速度,所以最终得到网络接口使用率如下:
写到这笔者做了一个测试,发现在华为云服务器是无法通过nicstat直接显示网络接口使用率的,不知道什么原因。
但是使用正常的虚拟机没有问题,如下图:
总结
网络无法支持100%的使用率。对于本地的局域网,基本超过40%就饱和了,但是也是基于不同的传输介质。
- 网络在应用当中是很走红要的一环,需要对其监控,防止其称为瓶颈。
- 如果写数据成为了瓶颈,那么可能是写数据的效率太低了,考虑代码是否存在问题。当然也可能是写入太多了。