关于压测的几点说明

时间:2021-12-26 16:42:16

1. 首先需要确定压测的基础环境,主要有服务器、网络、磁盘。

服务器CPU主频和缓存大小对于程序执行的快慢有较大影响,一般而言,IO密集型操作缓存的影响更大,CPU密集型操作主频影响更大;服务器CPU核数对多线程程序影响较大,对于高级语言而言,由于可以获取CPU核数,这块不用特殊配置。但对于部分语言如plsql,则确定CPU的核数从而确定执行线程非常重要。由于目前接触到的程序对于占用内存都比较重视,目前没有发现内存对性能影响较大的情况;

网络主要确定带宽,跨网段(机房)需要确定各个链路上网络设备(如火墙)的承载能力;

磁盘可以使用IOPS作为评价标准,机械硬盘,固态硬盘,共享存储,分布式存储,不同存储方案的带宽差别非常大。

确定网络和磁盘的能力,可以通过在不同机器之间拷贝文件的方式来大致确定带宽。

2. 压测监控(linux系统)

一般而言,需要监控的内容主要是CPU、内存、IO,因此常用的命令是top,iostat, vmstat

a. 其中top命令可以关注CPU,内存情况,注意总体CPU使用率较低,不代表应用进程CPU不繁忙,还需要看具体某一个进程CPU执行的情况。

内存占用可通过如下方式判断:

 

  Mem:   3925908k total,  3787840k used,   138068k free,    12716k buffers

 

  Swap:  4063224k total,  2030264k used,  2032960k free,   596756k cached  

 

  内存有问题的情况:free + buffers + cached 综合比较小或者swap free很少。

b iostat命令判断IO的占用情况,如iostat -x -m 5,命令介绍的文章很多;

c vmstat命令可以判断是否有进程阻塞,这对于多线程程序执行情况的判断非常有参考意义;