性能监控是性能测试过程中非常重要的一个环节,当在压测过程中出现性能瓶颈时,需要综合详细的监控数据对问题进行分析。整个系统架构中的每一个环节都需要做监控(压力机、网络、各中间件、各服务器硬件资源等)。性能监控做好了,能帮助快速的定位问题,找到系统的性能瓶颈。
今天我们先用系统自带命令来查看系统资源的使用情况。
1.监控内容:
- CPU使用率:反应系统的CPU繁忙程度;
- 内存使用率:反应系统内存的使用空间;
- 网络IO:反应系统网络流量;
- 磁盘IO:反应系统磁盘的读写状态。
2.监控命令
2.1.top命令
top命令是Linux下一个实时的、交互式的,对操作系统整体监控的命令,可以对CPU、内存、进程监控,是Linux下最常用的监控命令。
启动脚本给服务器一些压力,然后使用top命令进行查看,如下图所示。
在这些指标中我们需要重点关注下us、sy、id、wa和load_average这几个指标。
- us:用户进程占用CPU%;
- sy:系统进程占用CPU%;
- id:CPU空闲率;
- wa:CPU等待磁盘IO的占比;
- load_average:平均任务队列长度。
进程列表的排序默认情况下是按照进程占用的CPU使用率倒序来排列,如果想按照内存排序的话,可以按“M”,则会按照内存使用率倒序来排列。
在top命令中,输入数字1展示每个核的CPU使用情况,我的是2核的阿里云服务器,所以只有Cpu0和Cpu1,如下图所示。
总结:
- us一般比sy要高;
- wa比较高说明磁盘读写比较慢;
- 重点看id,用100%-id就是CPU的使用率;
- load_average:代表的是CPU在过去1分钟、5分钟、10分钟,平均任务队列的长度,值越高,代表负载越高,一般来说,load值不要超过CPU的核数,如果超过核数说明当前CPU的负载比较大;
2.2.内存监控-free命令
free命令可以查看当前系统内存的使用情况,直接输入free命令然后回车显示结果默认是按照字节来统计,一般情况下我们是用free -m来查看统计,如下图所示。
free-m 以MB为单位显示系统内存的使用情况,也可以使用-k、-g等其他的单位显示;
Mem:从操作系统角度统计内存的total、used、free、buffers/cached,buffers/cached为缓存占用(buffer为写操作的缓存,cache为读操作的缓存),available为实际可用内存,可用内存以这个为准(这个包含了在内存不足的时候从缓存中释放出来的量);
swap代表交互分区,存在的目的:在真正内存不足时,可用于充当临时内存。
swap的实际运用::当系统内存不足时,如果有新的程序去申请内存,操作系统会把当前内存中比较老(长时间不活动的进程占用的内存)数据交换到swap空间中,如果后续老数据又需要使用了,操作系统会从swap空间读取到内存中。当发生了swap的时候说明内存已经不足了。
2.3.磁盘IO监控-iostat
iostat命令可以查看当前机器磁盘io的数据,如果没安装,需要先执行命令:
yum install -y sysstat
使用命令可以查看磁盘使用情况:
iostat -x -k 1
- -x:展示磁盘的扩展信息;
- -k:以k为单位展示磁盘数据;
- 1:每1秒刷新一次;
磁盘的实际使用情况,如下所示:
- util:磁盘IO使用率,单位%,反映磁盘的繁忙程度,上限100%,重点需要关注这个;
- r/s:每秒读请求数;
- w/s:每秒写请求数;
- rkb:每秒写磁盘字节数;
- wkb:每秒读磁盘字节数;
2.4.磁盘空间监控-df
df命令可以查看当前系统磁盘空间的使用情况,执行命令:
df -h
需要重点关注挂载点为“/”的数据,如下所示。
2.5.磁盘读写速度测试
执行命令:
dd if=/dev/zero of=/home/ddtest bs=8k count=1000000 oflag=direct
将文件拷贝到ddtest目录下,一次8kb,拷贝100万次,按“ctrl+c”命令结束后能够显示磁盘的读写速度,如下所示。
注意点:of后面要是系统存在的目录,ddtest没有会自动创建。
Ps:下一篇会整理如何使用工具vmstat和sar来监控系统。