其他分享
首页 > 其他分享> > 性能测试必备知识(4)- 使用 stress 和 sysstat 分析平均负载过高的场景

性能测试必备知识(4)- 使用 stress 和 sysstat 分析平均负载过高的场景

作者:互联网

做性能测试的必备知识系列,可以看下面链接的文章哦

https://www.cnblogs.com/poloyy/category/1806772.html

 

stress 介绍

Linux 系统压力测试工具,这里通过异常进程模拟平均负载升高的场景

 

来看看 stress 命令行参数的讲解

 

 

Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size)

时间单位可以为秒 s,分m,小时h,天d,年y,文件大小单位可以为 K,M,G

 

sysstat 介绍

 

mpstat

 

pidstat

 

安装两个工具

提供百度云盘链接

链接:https://pan.baidu.com/s/1YENSYaGw7Ar1Z8hf8CXGqA

提取码:2tpc

放到 Linux 下的某个目录

 

解压

tar -zxvf sysstat-12.1.5.tar.gz

tar -zxvf stress-1.0.4.tar.gz

 

分别进入解压后的两个文件夹执行以下命令

./configure

make&&make install

 

平均负载和 CPU 使用率的实际栗子

前言

 

CPU 密集型进程

第一个终端

在第一个终端运行 stress 命令,模拟一个 CPU 使用率 100% 的场景

stress -c 1 -t 600

 

第二个终端

运行 uptime 查看系统平均负载情况,-d 参数表示高亮显示变化的区域

watch -d uptime

可以看到,1 分钟的平均负载会慢慢增加到 1.00

 

第三个终端

运行 mpstat 查看 CPU 使用率的变化情况

mpstat -P ALL 5

可以看出

 

接下来,就要排查是哪个进程导致 CPU 的使用率这么高的

 

使用 pidstat 命令

间隔 5 秒后输出一组数据

pidstat -u 5 1

从这里可以明显看到,stress 进程的 CPU 使用接近 100%

 

I/O 密集型进程

第一个终端

运行 stress 命令,但这次模拟 I/O 压力,即不停地执行 sync()

 

第二个终端

运行 uptime 查看系统平均负载情况,-d 参数表示高亮显示变化的区域

watch -d uptime

可以看到,1 分钟的平均负载也会慢慢增加到 1.00

 

第三个终端

运行 mpstat 查看 CPU 使用率的变化情况

mpstat -P ALL 5 1

 

灵魂拷问

其实 iowait 并没有上去,反而还是系统态(%sys)升高了,这是怎么回事?难道是工具的问题?

 

回答

 

解决办法

使用 stress 的另一个参数 -d ,含义上面已经说了哦

stress --hdd 1 -t 600 --hdd-bytes 4G

 

再通过 mpstat 看看指标

mpstat -P ALL 5

可以看到

 

接下来,就要排查是哪个进程导致 iowait 这么高了

 

使用 pidstat 命令

间隔 5 秒后输出一组数据,收集 10 次,查看最后的平均值

pidstat -u 5 10

可以看到

kworker 内核进程 和 stress 进程的 CPU 使用率都是偏高的

 

大量进程的场景

目的

当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程

 

第一个终端

这次模拟 8 个进程

stress -c 8 -t 600

 

第二个终端

运行 uptime 查看系统平均负载情况,-d 参数表示高亮显示变化的区域

watch -d uptime

我的系统只有 4 个 CPU,比 8 个进程少得多,CPU 处于严重的过载状态,平均负载已经超过 8 了

 

第三个终端

可以直接通过 pidstat 来查看进程的情况了,每隔 5s 收集一次,收集 5 次,看平均值

pidstat -u 5 5

可以看到

 

对于平均负载的一个理解和总结

 

平均负载过高的分析排查思路

 

通俗总结

平均负载过高是出现性能瓶颈的表现,分析瓶颈产生的源头和原因,需要通过各类工具

标签:负载,mpstat,必备,stress,sysstat,进程,使用率,CPU
来源: https://blog.51cto.com/u_12020737/2853904