本文转载自使用stress进行压力测试

导语

stress,顾名思义是一款压力测试工具。你可以用它来对系统CPU,内存,以及磁盘IO生成负载。

安装stress

几乎所有主流的linux发行版的软件仓库中都收录有stress,可以直接使用包管理起来安装

sudo pacman -S stress --noconfirm

使用stress

直接运行 stress 就会列出关于 stress 的简单说明

stress
`stress' imposes certain types of compute stress on your system Usage: stress [OPTION [ARG]] ...
-?, --help show this help statement
--version show version statement
-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) Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).

对CPU进行压力测试

使用 stress -c N 会让stress生成N个工作进程进行开方运算,以此对CPU产生负载。

比如你的CPU有四个核,那么可以运行

stress -c 4

这是查看stress进程信息

ps -elf |grep stress |grep -v grep
0 S lujun99+ 17738 1501 0 80 0 - 1996 - 23:06 pts/0 00:00:00 stress -c 4
1 R lujun99+ 17739 17738 95 80 0 - 1996 - 23:06 pts/0 00:01:17 stress -c 4
1 R lujun99+ 17740 17738 93 80 0 - 1996 - 23:06 pts/0 00:01:16 stress -c 4
1 R lujun99+ 17741 17738 94 80 0 - 1996 - 23:06 pts/0 00:01:17 stress -c 4
1 R lujun99+ 17742 17738 94 80 0 - 1996 - 23:06 pts/0 00:01:17 stress -c 4

你会发现一共有5个stress进程,其中有4个进程是 17738 进程派生出来的工作进程。而且每个工作进程占用的CPU利用率都接近100%

对内存进行压力测试

类似的,使用 stress -m N 会让stress生成N个工作进程来占用内存。每个进程默认占用256M内存,但可以通过 --vm-bytes 来进行设置。 例如

stress -m 3 --vm-bytes 300M

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

ps -elf |grep stress |grep -v grep
0 S lujun99+ 18700 1501 0 80 0 - 1996 - 23:26 pts/0 00:00:00 stress -m 3 --vm-bytes 300M
1 R lujun99+ 18701 18700 99 80 0 - 78797 - 23:26 pts/0 00:02:10 stress -m 3 --vm-bytes 300M
1 R lujun99+ 18702 18700 99 80 0 - 78797 - 23:26 pts/0 00:02:10 stress -m 3 --vm-bytes 300M
1 R lujun99+ 18703 18700 99 80 0 - 78797 - 23:26 pts/0 00:02:09 stress -m 3 --vm-bytes 300M

而且你会发现,虽然只是对内存进行压力测试,但实际上CPU也是很繁忙的,占有率也接近100%

对磁盘进行压力测试

对磁盘压力测试有两个参数:

stress -i N 会产生N个进程,每个进程反复调用sync()将内存上的内容写到硬盘上.

stress -d N 会产生N个进程,每个进程往当前目录中写入固定大小的临时文件,然后执行unlink操作删除该临时文件。 临时文件的大小默认为1G,但可以通过 --hdd-bytes 设置临时文件的大小。比如

stress -i 2 -d 4 --hdd-bytes 512M

你会发现压力测试时,当前目录所在可用空间少了2G,如下所示:

[lujun9972@T430S ~]$ df -h .
\文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb1 466G 255G 211G 55% /home
[lujun9972@T430S ~]$ stress -i 2 -d 4 --hdd-bytes 512M &
[1] 20101
[lujun9972@T430S ~]$ stress: info: [20101] dispatching hogs: 0 cpu, 2 io, 0 vm, 4 hdd
[lujun9972@T430S ~]$ df -h .
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb1 466G 257G 209G 56% /home

同时对多项指标进行压力测试

stress支持同时对多个指标进行压力测试,只需要把上面的参数组合起来就行

stress -c 4 -m 2 -d 1

这个时候你再看stress进程

ps -elf |grep stress |grep -v grep
0 S lujun99+ 19048 1501 0 80 0 - 1996 - 23:36 pts/0 00:00:00 stress -c 4 -m 2 -d 1
1 R lujun99+ 19049 19048 56 80 0 - 1996 - 23:36 pts/0 00:00:25 stress -c 4 -m 2 -d 1
1 R lujun99+ 19050 19048 55 80 0 - 67533 - 23:36 pts/0 00:00:25 stress -c 4 -m 2 -d 1
1 D lujun99+ 19051 19048 28 80 0 - 2221 - 23:36 pts/0 00:00:12 stress -c 4 -m 2 -d 1
1 R lujun99+ 19052 19048 58 80 0 - 1996 - 23:36 pts/0 00:00:26 stress -c 4 -m 2 -d 1
1 R lujun99+ 19053 19048 56 80 0 - 67533 - 23:36 pts/0 00:00:25 stress -c 4 -m 2 -d 1
1 R lujun99+ 19054 19048 57 80 0 - 1996 - 23:36 pts/0 00:00:25 stress -c 4 -m 2 -d 1
1 R lujun99+ 19055 19048 58 80 0 - 1996 - 23:36 pts/0 00:00:26 stress -c 4 -m 2 -d 1

你会发现工作进程一共有7个,也就是说每个进程只负责一项测试。

设置超时时间

通过 -t TIMEOUT 可以让stress只运行一段时间后自动退出。这一般在写脚本的时候会用到。

比如我想要运行上面的测试,但是10秒后自动退出,那么

stress -c 4 -m 2 -d 1 -t 10s
stress: info: [19302] dispatching hogs: 4 cpu, 0 io, 2 vm, 1 hdd
stress: info: [19302] successful run completed in 11s

使用stress进行压力测试的更多相关文章

  1. centos8平台使用stress做压力测试

    一,安装stress: 说明:el8的源里面还没有,先用el7的rpm包 [root@centos8 source]# wget https://download-ib01.fedoraproject ...

  2. linux压力测试工具stress

    最近给PASS平台添加autoscaling的功能,根据服务器的负载情况autoscaling,为了测试这项功能用到了stress这个压力测试工具,这个工具相当好用了.具体安装方式就不说了.记录下这个 ...

  3. Linux压力测试工具stress的参数详解

    为了测试服务器的负载情况,可以使用stress这个压力测试工具,可以在环境上验证测试下. stress安装 sudo yum install -y epel-release sudo yum inst ...

  4. 树莓派压力测试工具S-Tui + Stress的使用

    压力测试工具S-Tui + Stress的使用 树莓派# 背景故事 打算测试一下树莓派外壳的散热性能,需要能压满CPU100%,同时显示温度.CPU频率.CPU占用率,那么这款工具你值得拥有. 软件介 ...

  5. 微软压力测试工具 web application stress

    转自 http://www.cnblogs.com/tonykan/p/3514749.html lbimba  铜牌会员 这里给广大的煤油推荐一个web网站压力测试工具.它可以用来模拟多个用户操作网 ...

  6. 使用Microsoft Web Application Stress Tool对web进行压力测试

    Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试一些Web服务器的运行状态和响应时间等等,对于Web服务器的承受力测试是个非常好的手法.Web 压力测试通常是利用一些工具,例如微软 ...

  7. (转)使用Microsoft Web Application Stress Tool对web进行压力测试

    http://www.blogjava.net/crespochen/archive/2009/06/02/279538.html Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试 ...

  8. 使用Web Application Stress Tool 进行压力测试

    1.在测试客户端机器上启动Web Application Stress Tool,在弹出的“建立新脚本”对话框中选择“Record”按钮: 2.在“Record”参数设置第一步中,所有的checkbo ...

  9. Linux压力测试软件Stress安装及使用指南

      一.Stress是什么 stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户. 二.安装 将stress的安装包上传并解压到linux服务 ...

随机推荐

  1. Chrome标签整理

    程序人生 设计素材类网站 关于生活 求职相关网站 Web前端 科技新闻相关网站 优秀资源内含丰富学习资料 项目实例视频资料等 面试简历相关 适合初学者自学的编程网站 国内优秀博客 由于平时经常浏览一些 ...

  2. c++bind函数使用

    总述     最近写代码的时候看到代码使用了bind,一个参数绑定的标准库函数.程序是这么写的, speaker_play_routine_ = new boost::thread (boost::b ...

  3. 2019牛客暑期多校训练营(第六场)C Palindrome Mouse (回文树+DFS)

    题目传送门 题意 给一个字符串s,然后将s中所有本质不同回文子串放到一个集合S里面,问S中的两个元素\(a,b\)满足\(a\)是\(b\)的子串的个数. 分析 首先要会回文树(回文自动机,一种有限状 ...

  4. 2020Nowcode多校 Round5 C. Easy

    C. Easy 构造两个序列分别要满足 \(\sum_{i=1}^{k} a_{i} = N\) \(\sum_{i=1}^{k} b_{i} = M\) 一种方案能贡献\(\prod_{i=1}^{ ...

  5. Codeforces Round #570 (Div. 3) E. Subsequences (easy version) (搜索,STL)

    题意:有一长度为\(n\)的字符串,要求得到\(k\)不同的它的子序列(可以是空串),每个子序列有\(|n|-|t|\)的贡献,求合法情况下的最小贡献. 题解:直接撸个爆搜找出所有子序列然后放到set ...

  6. 洛谷 P2880 [USACO07JAN]Balanced Lineup G (ST表模板)

    题意:给你一组数,询问\(q\)次,问所给区间内的最大值和最小值的差. 题解:经典RMQ问题,用st表维护两个数组分别记录最大值和最小值然后直接查询输出就好了 代码: int n,q; int a[N ...

  7. 郁闷的出纳员 HYSBZ - 1503

    OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的 工资.这本来是一份不错的工作,但是令人郁闷的是,我们的老板反复无常,经常调整员工的工资.如果他 ...

  8. 交换机上禁止某个MAC地址通信

    当分析出网络中某台机器中毒时而有不知道它的具体位置,我们可以通过获取其MAC地址然后在交换机上禁止其MAC来达到隔离它的效果.通过ARP表查询IP地址对应的MAC地址,再将该MAC地址加入黑名单过滤. ...

  9. Redis 主从复制(Replication)

    为了保证服务的可用性,现代数据库都提供了复制功能,同时在多个进程中维护一致的数据状态. Redis 支持一主多从的复制架构,该功能被简化成了一条 SLAVEOF 命令,下面通过条命令来解析 Redis ...

  10. unbuntu 安装 bochs

    参考 https://www.cnblogs.com/HonkerYblogs/p/10285619.html https://blog.csdn.net/time4/article/details/ ...