stress命令安装
一、stress(cpu)
stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户。
下载地址
http://people.seas.harvard.edu/~apw/stress/
进入到usr/local/bin目录下: #cd /usr/local/src
上传stress压缩包: #rz
解压缩包: #tar -xzpvf stress-1.0.4.tar.gz
进入到已解压的文件夹: #cd stress-1.0.4
输入./configure进行配置 : #./configure
然后进行以下命令输入:
#make
#make check
#make install
最后输入:stress --version 验证是否安装成功
命令参数:
Usage: stress [OPTION [ARG]] ... -?, --help //显示帮助信息 --version //显示软件版本信息 -v, --verbose // be verbose -q, --quiet // be quiet -n, --dry-run //show what would have been done -t, --timeout N // timeout after N seconds --backoff N // wait factor of N microseconds before work starts -c, --cpu N //spawn N workers spinning on sqrt() -i, --io N //spawn N workers spinning on sync() -m, --vm N //spawn N workers spinning on malloc()/free() --vm-bytes B //malloc B bytes per vm worker (default is 256MB) --vm-stride B //touch a byte every B bytes (default is 4096) --vm-hang N //sleep N secs before free (default none, 0 is inf) --vm-keep //redirty memory instead of freeing and reallocating -d, --hdd N //spawn N workers spinning on write()/unlink() --hdd-bytes B //write B bytes per hdd worker (default is 1GB)
-?
--help 显示帮助信息
--version 显示软件版本信息
-t secs:
--timeout secs指定运行多少秒
--backoff usecs 等待usecs微秒后才开始运行
-c forks:
--cpu forks 产生多个处理sqrt()函数的CPU进程
-m forks
--vm forks:产生多个处理malloc()内存分配
-i forks
--io forks:产生多个处理sync()函数的磁盘I/O进程
--vm-bytes bytes:指定内存的byte数,默认值是1
--vm-hang:表示malloc分配的内存多少时间后在free()释放掉
-d :
--hdd:写进程,写入固定大小,通过mkstemp()函数写入当前目录
--hdd-bytes bytes:指定写的byte数,默认1G
--hdd-noclean:不要将写入随机ascii数据的文件unlink,则写入的文件不删除,会保留在硬盘空间。
>>>>>>安装过程中遇到的坑:
1、yum安装会出现yum源的问题导致安装不成功,如何解决呢?
博客:https://www.cnblogs.com/dadong616/p/5062727.html
2、没有make命令
练习::
1、stress --cpu 1 --timeout 600 分析现象?负载为啥这么高?top命令查看用户进程消耗的cpu过高(stress进程消耗的)
2、stress -i 1 --timeout 600 分析现象?top看负载升高,内核cpu过高? iostat -x stress消耗cpu多,iowait 等待 pidstat -d
3、stress -c 8 --timeout 600
案例:vu增加,tps降低,响应时间增加?
打印tomcat的整体响应时间,再打印接口的处理时间。
tomcat从1秒增加到8秒。
原因最后:线程池的上下文切换导致的线程等待时间过长。
4、sysbench --threads=10 --max-time=300 threads run
cswch自愿上下文切换:进程无法获取资源导致的上下文切换,比如;I/O,内存资源等系统资源不足,就会发生自愿上下文切换。
nvcswch非自愿上下文切换:进程由于时间片已到,被系统强制调度,进而发生的上下文切换 ,比如大量进程抢占cpu。
5、vmstat 默认看的是
pidstat -w 默认看的是进程的上下文切换
pidstat -wt -t参数看线程的上下文切换
6、python3 脚本运行分析
app.py
负载上来,top 定位到磁盘有问题
iostat -x 3 定位到写操作有问题
pidstat -d 中断不可恢复的情况比较多,定位到python进程的写操作有问题
和写操作有关,则和程序里的方法有问题
strace -p pid 跟踪进程 ,可以看到是大量的写操作,往log.txt里写文件导致的
查看代码,分析分析,可以看到代码中的写入大小
分析流程:
负载-cpu-b(中断不可恢复的进程比如io)
负载高-cpu-iowait-io-(中断、上下文切换、读写)-(pidstat -d)定位到某个进程的写-(strace 跟踪进程,定位到写哪个文件)-查看源码,定位到写这个文件的代码块。
7、
8、