stress是一个linux的压力测试工具,主要用来模拟系统负载较高时的场景,用于对系统的CPU、IO、内存、负载、磁盘等进行压力测试。

在线安装

yum install -y epel-release && yum install stress -y

使用stress

stress各主用参数说明(-表示后接一个中划线,--表示后接2个中划线,均可用于stress后接参数,不同表达方式):

    -?
    --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、测试CPU负荷

stress --cpu 6 --timeout 100

压满6个cpu,执行100秒(--timeout可以直接用--t)

stress -c 4

增加4个cpu进程,处理sqrt()函数函数,以提高系统CPU负荷

2、内存测试
新增4个内存分配进程,每次分配大小730M,分配后不释放,长期保持测试 / 测试60秒
长期保持测试,需Ctrl+Z手动停止

stress --vm 4 --vm-bytes 730M --vm-keep  

测试60秒

stress --vm 4 --vm-bytes 730M --timeout 60

3、磁盘I/O测试

stress -m 3 --vm-bytes 300M

会生成3个进程,每个进程占用300M内存

stress -d 1 --hdd-bytes 3G

新增1个写进程,每次写3G文件块

stress --io 6 -d 1 --hdd-bytes 1000M -t 100

新增6个I/O进程,1个写进程,每次写1000M文件块,测试100秒

4、硬盘测试(不删除)

stress -i 1 -d 10 --hdd-bytes 3G -hdd-noclean

新增1个IO进程,10个写进程,每次写入3G文件块,且不清除,会逐步将硬盘耗尽。

Ctrl+Z表示暂停进程运行
Ctrl+C表示终止进程运行