作性能测试的必备知识系列,能够看下面连接的文章哦html
https://www.cnblogs.com/poloyy/category/1806772.htmlswift
Linux 系统压力测试工具,这里经过异常进程模拟平均负载升高的场景函数
字段 | 含义 |
---|---|
-?、--help | 帮助文档 |
--version、-v | 版本号 |
-q | 退出 |
-n | 显示已完成指令的状况 |
-t N、--timeout N | 运行 N 秒后中止 |
--backoff N | 等待 N 微秒后开始运行 |
-c N、--cpu N |
|
-i N、--io N |
|
-m N、--vm N |
|
--vm-bytes B工具 |
指定 malloc() 时内存的字节数,默认256MB |
--vm-hang N | 指定执行 free() 前等待的秒数 |
-d N、 --hdd N |
|
--hdd-bytes B | 每一个 hdd worker 写入 B 字节(默认为1GB)性能 |
时间单位能够为秒 s,分m,小时h,天d,年y,文件大小单位能够为 K,M,G测试
连接:https://pan.baidu.com/s/1YENSYaGw7Ar1Z8hf8CXGqAspa
提取码:2tpc命令行
放到 Linux 下的某个目录3d
tar -zxvf sysstat-12.1.5.tar.gz tar -zxvf stress-1.0.4.tar.gz
./configure make&&make install
在第一个终端运行 stress 命令,模拟一个 CPU 使用率 100% 的场景code
stress -c 1 -t 600
运行 uptime 查看系统平均负载状况,-d 参数表示高亮显示变化的区域
watch -d uptime
能够看到,1 分钟的平均负载会慢慢增长到 1.00
运行 mpstat 查看 CPU 使用率的变化状况
mpstat -P ALL 5
能够看出
接下来,就要排查是哪一个进程致使 CPU 的使用率这么高的
间隔 5 秒后输出一组数据
pidstat -u 5 1
从这里能够明显看到,stress 进程的 CPU 使用接近 100%
运行 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 -P ALL 5
能够看到
接下来,就要排查是哪一个进程致使 iowait 这么高了
间隔 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
能够看到
平均负载太高是出现性能瓶颈的表现,分析瓶颈产生的源头和缘由,须要经过各种工具