Stress压力工具的部署及使用
下载地址:wget https://fossies.org/linux/privat/old/stress-1.0.5.tar.gz
1.部署
进入目录执行./autogen.sh
[root@iZ2ze1pj93eyq389c2ppi5Z stress-1.0.5]# ./autogen.sh
ps:如果执行过程中缺包,安装对应的包
如报错:./autogen.sh: autoreconf: command not found
yum install autoconf automake libtool
源码安装
[root@iZ2ze1pj93eyq389c2ppi5Z stress-1.0.5]# ./configure
[root@iZ2ze1pj93eyq389c2ppi5Z stress-1.0.5]# make
[root@iZ2ze1pj93eyq389c2ppi5Z stress-1.0.5]# make install
2.模拟压力命令
执行压力命令 -c 1 启用一个进程进行压测 -t 运行时间
[root@iZ2ze1pj93eyq389c2ppi5Z stress-1.0.5]# stress -c 1 -t 100
下图为压一个内核显示的cpu使用率
3.监控cpu资源命令
使用mpstat可以查看某一个cpu的资源表现情况
[root@iZ2ze1pj93eyq389c2ppi5Z ~]# mpstat -P 0 1 1
ALL查看每个cpu资源使用情况
[root@iZ2ze1pj93eyq389c2ppi5Z ~]# mpstat -P ALL 1 1
[root@iZ2ze1pj93eyq389c2ppi5Z ~]# pidstat 1 1
输出消耗cpu资源比较多的进程信息
总结:
vmstat:统计所有资源利用的情况
mpstat:统计每个cpu内核的资源消耗情况
pidstat:输出消耗cpu资源比较多的进程信息
定位cpu消耗比较高的基本思路:
1).找进程
2).通过进程编号找线程
3).根据线程编号找代码
4).定位代码(JVM知识体系)
4.IO压力测试
IO分网络IO和磁盘IO
[root@iZ2ze1pj93eyq389c2ppi5Z stress-1.0.5]# stress -i 4 -t 100
-i :指定产生N个处理sync()的磁盘I/O进程,sync()用于将内存上的内容写到磁盘上去。
如果内存上没有数据就会搞的系统态资源很高,但是IOWAIT很低。
为什么系统态消耗资源高?
系统态cpu:执行的内核代码
用户态cpu:执行的应用程序
磁盘IO分为逻辑IO、物理IO
逻辑IO是操作系统发起的IO,这个数据可能会放在磁盘上,也可能会放在内存(文件系统的Cache)里。
物理IO是设备驱动发起的IO,这个数据最终会落在磁盘上。
现在操作是逻辑IO,把缓存的数据写到磁盘上去,当前缓存中没有数据,但是就算没有数据还需要调用内核中的代码来执行写数据的动作,所以产生了很高的内核态的资源利用率
-d:指定产生N个不断执行write和unlink函数的进程(创建文件、写入文件、删除文件)
[root@iZ2ze1pj93eyq389c2ppi5Z ~]# stress -d 1 --hdd-bytes 1024G