一,安装stress:

说明:el8的源里面还没有,先用el7的rpm包

[root@centos8 source]# wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/s/stress-1.0.4-16.el7.x86_64.rpm
[root@centos8 source]# rpm -ivh stress-1.0.4-16.el7.x86_64.rpm

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,stress的用途:

stress 命令主要用来模拟系统负载较高时的场景,

可以对cpu、memory、IO以及磁盘进行压力测试

三,查看stress的版本和帮助

1,查看版本

[root@centos8 source]# stress --version
stress 1.0.4

2,查看帮助:

[root@centos8 source]# stress --help
`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)

四,stress命令的参数说明:

-c --cpu 产生n个进程 每个进程都反复不停的计算随机数的平方根

-i --io  产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上

-m --vm n 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数

--vm-bytes B 指定malloc时内存的字节数 (默认256MB)

--vm-hang N 指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,这有利于模拟只有少量内存的机器

-d --hadd n 产生n个执行write和unlink函数的进程

--hadd-bytes B 指定写的字节数,默认是1GB

--hadd-noclean 不要将写入随机ASCII数据的文件Unlink

-t, --timeout N    持续指定的N秒后退出

五,stress的使用例子:cpu

1,在容器内执行stress,创建四个消耗 CPU 资源的进程

[root@centos8 ~]# stress -c 4 --timeout 600
stress: info: [3868] dispatching hogs: 4 cpu, 0 io, 0 vm, 0 hdd

2,用pidstat查看cpu的使用数据

# 显示所有CPU的指标,并在间隔5秒输出一组数据

[root@centos8 ~]# pidstat -p ALL 5
平均时间: UID PID %usr %system %guest %wait %CPU CPU Command
平均时间: 0 3869 48.76 0.00 0.00 50.65 48.76 - stress
平均时间: 0 3870 46.87 0.10 0.00 52.54 46.97 - stress
平均时间: 0 3871 47.36 0.00 0.00 51.84 47.36 - stress
平均时间: 0 3872 48.16 0.00 0.00 51.44 48.16 - stress

说明:可以明显看到,stress 进程的 CPU 使用率很高

六,stress的使用例子:内存

1,启动2个消耗内存的进程,每个进程占用200M内存

[root@centos8 ~]# stress -m 2 --vm-bytes 200M
stress: info: [4364] dispatching hogs: 0 cpu, 0 io, 2 vm, 0 hdd

2,用pidstat 查看内存的占用情况

[root@centos8 ~]# pidstat -r | grep stress
13时32分48秒 UID PID minflt/s majflt/s VSZ RSS %MEM Command
13时33分38秒 0 4364 0.04 0.00 7948 1044 0.03 stress
13时33分38秒 0 4365 8748.16 0.00 212752 56072 1.46 stress
13时33分38秒 0 4366 9156.42 0.00 212752 91712 2.38 stress

七,stress的使用例子:硬盘

1, stress -d N 会产生N个进程:

每个进程往当前目录中写入固定大小的临时文件,然后执行unlink操作删除该临时文件。

临时文件的大小默认为1G,但可以通过 --hdd-bytes 设置临时文件的大小。

[root@centos8 ~]# stress -d 2
stress: info: [4523] dispatching hogs: 0 cpu, 0 io, 0 vm, 2 hdd

2,用pidstat监控磁盘,可以看到两个stress进程在做大量的写入

[root@centos8 ~]# pidstat -d
Linux 4.18.0-147.5.1.el8_1.x86_64 (centos8) 2020年04月03日 _x86_64_ (2 CPU)

13时43分47秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s iodelay Command
13时43分47秒 0 4524 0.00 166.98 0.00 0 stress
13时43分47秒 0 4525 0.00 165.31 0.00 0 stress

3,用iostat查看,也可以看到 kB_wrtn/s 的数值增长

[root@centos8 ~]# iostat
Linux 4.18.0-147.5.1.el8_1.x86_64 (centos8) 2020年04月03日 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle
6.40 0.02 3.14 1.25 0.00 89.19 Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 11.34 273.05 5296.74 863387 16748451
scd0 0.01 0.34 0.00 1060 0
dm-0 11.14 252.57 5296.85 798627 16748789
dm-1 0.17 0.75 0.51 2376 1616
dm-2 0.24 7.82 1.71 24714 5422

八,stress的使用例子:io

1,使用4个进程生成大量io, 即执行:sync()操作

[root@centos8 source]# stress -i 4

2,使用top可以看到stress的4个进程占用了大量的cpu资源

[root@centos8 conf]# top
...
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9143 root 20 0 7948 96 0 R 54.5 0.0 0:20.52 stress
9142 root 20 0 7948 96 0 R 53.8 0.0 0:20.88 stress
9141 root 20 0 7948 96 0 R 52.5 0.0 0:20.31 stress
9144 root 20 0 7948 96 0 R 52.2 0.0 0:20.65 stress

3,用pidstat查看进程,能看到stress的4个进程产生的大量的wait类的cpu使用

pidstat参数:间隔5秒后输出一组数据,-u表示CPU指标

[root@centos8 conf]# pidstat -u 5 1
Linux 4.18.0-147.5.1.el8_1.x86_64 (centos8) 2020年04月01日 _x86_64_ (2 CPU) 15时36分37秒 UID PID %usr %system %guest %wait %CPU CPU Command
15时36分42秒 0 1064 0.20 0.00 0.00 6.72 0.20 1 vmtoolsd
15时36分42秒 1000 2704 1.19 0.00 0.00 0.99 1.19 0 gnome-shell
15时36分42秒 0 2889 0.20 0.00 0.00 0.20 0.20 0 sssd_kcm
15时36分42秒 1000 3279 0.20 0.00 0.00 1.98 0.20 0 gnome-terminal-
15时36分42秒 0 8992 0.00 0.20 0.00 2.57 0.20 0 kworker/0:0-events
15时36分42秒 0 9033 0.59 48.81 0.00 50.59 49.41 0 stress
15时36分42秒 0 9034 0.59 48.42 0.00 50.00 49.01 1 stress
15时36分42秒 0 9035 0.59 48.02 0.00 50.59 48.62 0 stress
15时36分42秒 0 9036 0.59 48.62 0.00 50.20 49.21 1 stress
15时36分42秒 0 9074 0.20 0.40 0.00 0.99 0.59 0 pidstat 平均时间: UID PID %usr %system %guest %wait %CPU CPU Command
平均时间: 0 1064 0.20 0.00 0.00 6.72 0.20 - vmtoolsd
平均时间: 1000 2704 1.19 0.00 0.00 0.99 1.19 - gnome-shell
平均时间: 0 2889 0.20 0.00 0.00 0.20 0.20 - sssd_kcm
平均时间: 1000 3279 0.20 0.00 0.00 1.98 0.20 - gnome-terminal-
平均时间: 0 8992 0.00 0.20 0.00 2.57 0.20 - kworker/0:0-events
平均时间: 0 9033 0.59 48.81 0.00 50.59 49.41 - stress
平均时间: 0 9034 0.59 48.42 0.00 50.00 49.01 - stress
平均时间: 0 9035 0.59 48.02 0.00 50.59 48.62 - stress
平均时间: 0 9036 0.59 48.62 0.00 50.20 49.21 - stress
平均时间: 0 9074 0.20 0.40 0.00 0.99 0.59 - pidstat

可以看到stress占用了cpu大量的wait类时间

九,查看centos的版本

[root@centos8 ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)

centos8平台使用stress做压力测试的更多相关文章

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

    一,安装ab [root@blog ~]# yum install httpd-tools 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/archi ...

  2. Webbench、ab命令:做压力测试的工具和性能的监控工具

    DDOS攻击:???DDOS概述:分布式拒绝服务(DDoS:Distributed Denial of Service)攻击,指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目 ...

  3. (转)学习使用Jmeter做压力测试(三)--数据库测试

    数据库测试 JMeter可以做为Web服务器与浏览器之间的代理网关,以捕获浏览器的请求和Web服务器的响应,这样就可很容易的生成性能测试脚本. 根据脚本,JMeter可通过线程组来模拟真实用户对Web ...

  4. 使用JMeter做压力测试

    使用JMeter做压力测试 1.下载Jmeter 地址:http://jmeter.apache.org/download_jmeter.cgi 2.启动jmeter 运行bin/jmeter.bat ...

  5. jmeter教程--简单的做压力测试

    Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 什么是压力测试 顾名思义:压力测试,就是  被测试的系统,在 ...

  6. Linux学习13-CentOS安装ab做压力测试

    前言 网站性能压力测试是服务器网站性能调优过程中必不可缺少的一,测试环境准备好了后,如何对网站做压力测试? 压力测试的工具很多,如:ab.http_load.webbench.siege.jmeter ...

  7. 使用Application Center Test (ACT)来做压力测试 【转】

    在我们完成了基于SPS2003的开发,实现了我们的具体应用以后,我们是不是就可以直接请用户来使用了呢?如果我这么做,那么有经验的开发人员一定会对此嗤之以鼻:居然连压力测试也不做!真是不想活了…… 呵呵 ...

  8. 在linux中给你的应用做压力测试

    在linux中给你的应用做压力测试 作者: 立地 邮箱: jarvin_g@126.com QQ: 511363759 一.webbench 1.在Ubuntu中安装webbench —支持get,h ...

  9. loadrunner之做压力测试要做的准备

    前提B/S架构 1.要有个备库和主库保存一致 到时候做压力测试的时候,要断开主库连接到备库.进行测试.以免主库出现垃圾数据.2.节点 判断单节点能承受多大的压力,如200万的用户账号,10万的在线用户 ...

随机推荐

  1. Java I/O流 复制文件速度对比

    Java I/O流 复制文件速度对比 首先来说明如何使用Java的IO流实现文件的复制: 第一步肯定是要获取文件 这里使用字节流,一会我们会对视频进行复制(视频为非文本文件,故使用之) FileInp ...

  2. redis加固:修改默认端口6379、密码不为空、内网服务器访问

    一.windows下redis加固: 1.修改redis密码+修改redis端口 1.1.找到服务当中redis的属性配置文件是哪个   这个是我的"D:\Program Files\Red ...

  3. linux如何把普通用户添加到sudo组

    sudo原理:运行命令时,系统检查/etc/sudoers 配置文件,看这个用户是否有执行sudo的权限,如果有权限,系统要求输入用户自己的密码,如果密码输入正确,系统会以root身份运行 passw ...

  4. 硬核看房利器——Web 全景的实现

    作者:凹凸曼 - EC 疫情期间,打破社交距离限制的交互模式被推向前台,为不少行业的传统交易提供了想象的空间. 疫情时期,房地产租售业受到的冲击无疑是巨大的,由于人口流动的限制,需求量大幅减少,无法现 ...

  5. 关于java基础_方法的学习

    方法: 方法就是把一堆需要反复执行的代码封装起来,如果项目需要调用这段代码时,直接调用方法名即可 方法相当于榨汁机, 材料:水果 产出物:果汁 参数(材料):进入方法的数据 返回值(产出物):就是方法 ...

  6. 原生post请求

    ajax: function(opt) { opt = opt || {}; opt.method = opt.method.toUpperCase() || 'POST'; opt.url = op ...

  7. JDK动态代理学习心得

    JDK动态代理是代理模式的一种实现方式,其只能代理接口.应用甚为广泛,比如我们的Spring的AOP底层就有涉及到JDK动态代理(此处后面可能会分享) 1.首先来说一下原生的JDK动态代理如何实现: ...

  8. 【转】Locust-工具核心原理分析

    Locust工具在市场上不如Loadrunner / JMeter流行,使用的范围也没有那么广,但不可否认其是一款很不错的工具.我个人觉得Locust使用不是那么广泛,主要是因为一下方式: Locus ...

  9. Oracle学习(十七)数据库锁在分布式系统里的应用(老板,乐观锁了解一下?~)

    一.引言 随着业务量的增加,单机部署已经无法满足日常需求了,我们可能会把代码部署到多台服务器上去来进行服务的扩容,也就是负载均衡,那在这种场景下,怎么能实现锁的概念呢? 那么我们知道如果是一台主机部署 ...

  10. 【记】《.net之美》之读书笔记(一) C#语言基础

    前言 工作之中,我们习惯了碰到任务就直接去实现其业务逻辑,但是C#真正的一些基础知识,在我们久而久之不去了解巩固的情况下,就会忽视掉.我深知自己正一步步走向只知用法却不知原理的深渊,所以工作之余,一直 ...