工欲成其事,必先善其器,CentOS 7的EPEL源包含了2个压力测试工具,一个是标准的stress, 另外一个是更强大的stress-ng,可以帮助模拟产生各种cpu压力。 安装 ? 这种情况,推荐使用 stress-ng 来代替 stress。 比如, 从下面可以看出经过30秒的压力后,系统负载从0.00提升至0.57。 ? stress-ng stress-ng完全兼容stress, 并且在此基础上通过几百个参数,可以产生各种复杂的压力, 比如: 产生2个worker做圆周率算法压力: ? 使用率变高; 3.可以通过pidstat查看是哪个进程导致CPU使用率较高 应用场景2 I/O 密集型进程(等待IO的进程) 对IO进行压测(使用stress观测到的iowait指标可能为0,所以使用stress-ng ) [root@nginx ~]# stress-ng -i 4 --hdd 1 --timeout 600 [root@nginx ~]# uptime 11:11:12 up 1:05, 4
今天要来推荐的工具是 linux下的压力测试工具,stress的升级版本stress-ng,与stress兼容,但是又比stress强大。 官方地址如下:https://github.com/ColinIanKing/stress-ng废话不多说我们来使用一下康康 stress-ng 安装 执行命令 yum install stress stress-ng 的基础使用 stress-ng --cpu 2 --timeout 10 压测2个cpu,持续10秒,然后我们再开一个终端,在里面输入 top -d 1 之后,再按1,即可看到当前2个cpu的占用率 1G内存,你也可以换成500M什么的 stress-ng --hdd 3 --hdd-bytes 20G --timeout 180s 压测磁盘io。 更多的使用方法,可以使用 stress-ng --help来查询 创作不易,如果您觉得这篇文章对你有帮助,不妨给我点个赞,这将是我继续分享优质内容的动力。
39696 ("stress-ng"), OOM kill of PID 39694 ("stress-ng"), 1704429 pages, loadavg: 4.31 2.89 1.78 5/396 39697 15:41:17 Triggered by PID 39698 ("stress-ng"), OOM kill of PID 39695 ("stress-ng"), 1704429 pages by PID 39700 ("stress-ng"), OOM kill of PID 39700 ("stress-ng"), 1704429 pages, loadavg: 4.29 2.91 1.80 39703 ("stress-ng"), OOM kill of PID 39702 ("stress-ng"), 1704429 pages, loadavg: 4.59 3.00 1.83 5/396 Ctrl-C to stop. 19:42:24 Triggered by PID 1539774 ("stress-ng"), OOM kill of PID 1539775 ("stress-ng"
今天介绍两个重要的工具:stress和stress-ng,用于Linux系统下进行压力测试: 1. stress是一种工作负载生成器工具,旨在让您的系统承受CPU、内存、I/O 和磁盘压力的可配置测量 在Linux中安装stress-ng工具 1. 安装stress-ng 要安装stress-ng,请运行以下命令。 # yum install stress-ng [在基于RedHat的系统上] 使用stress-ng的一般语法是: $ sudo stress-ng 选项参数 您可以与stress-ng一起使用的一些选项参数 使用-h查看stress-ng 的帮助。 2. 如何在Linux系统中使用stress-ng a. 运行8个CPU压力源,超时时间为60秒,并在操作结束时进行汇总。 b.
一.简介 使用stress-ng是一个 Linux 系统压力测试工具,模拟进程平均负载升高的场景。 使用sysstat来检查监控和分析。 安装epel和软件包 rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm yum -y install stress-ng sysstat 二.大量计算 开启一个终端,以下为模拟一个cpu跑满,并持续10分钟 stress-ng --cpu 1 --timeout 600 再开启一个终端,查看平均负载 可以看到负载慢慢的往上升 pidstat -u 5 1 三.大量IO 模拟IO压力,不同sync stress-ng -i 1 --hdd 1 --timeout 600 可以看到大量的iowait,也就是cpu在读写上花的使用率
[openEuler@openEuler ~]$ stress-ng --vm 2 --vm-bytes 8G --vm-method all --verify -t 60s stress-ng: info fault [openEuler@openEuler ~]$ stress-ng --vm 2 --vm-bytes 7G --vm-method all --verify -t 60s stress-ng ~]$ stress-ng --vm 2 --vm-bytes 6G --vm-method all --verify -t 60s stress-ng: info: [10516] setting [openEuler@openEuler ~]$ stress-ng --vm 2 --vm-bytes 5G --vm-method all --verify -t 60s stress-ng: info 8G: 由于你的系统可能没有8G的空闲物理内存,或者操作系统无法为stress-ng分配这么多连续的虚拟内存空间(考虑到其他进程和系统开销),因此stress-ng在尝试分配或操作这些内存时触发了段错误
39696 ("stress-ng"), OOM kill of PID 39694 ("stress-ng"), 1704429 pages, loadavg: 4.31 2.89 1.78 5/396 39697 15:41:17 Triggered by PID 39698 ("stress-ng"), OOM kill of PID 39695 ("stress-ng"), 1704429 pages by PID 39700 ("stress-ng"), OOM kill of PID 39700 ("stress-ng"), 1704429 pages, loadavg: 4.29 2.91 1.80 39703 ("stress-ng"), OOM kill of PID 39702 ("stress-ng"), 1704429 pages, loadavg: 4.59 3.00 1.83 5/396 Ctrl-C to stop. 19:42:24 Triggered by PID 1539774 ("stress-ng"), OOM kill of PID 1539775 ("stress-ng"
: [root@openEuler ~]# stress-ng --vm 2 --vm-bytes 6G --vm-method all --verify -t 60s stress-ng: info: stress-ng --vm 2 --vm-bytes 4G --vm-method all --verify -t 60s stress-ng: info: [7128] setting to a 60 second run per stressor stress-ng: info: [7128] dispatching hogs: 2 vm stress-ng: info: [7128] successful stress-ng --vm 2 --vm-bytes 5G --vm-method all --verify -t 60s stress-ng: info: [7206] setting to a 60 second run per stressor stress-ng: info: [7206] dispatching hogs: 2 vm stress-ng: info: [7206] successful
39696 ("stress-ng"), OOM kill of PID 39694 ("stress-ng"), 1704429 pages, loadavg: 4.31 2.89 1.78 5/396 39703 ("stress-ng"), OOM kill of PID 39702 ("stress-ng"), 1704429 pages, loadavg: 4.59 3.00 1.83 5/396 1.18 59 stress-ng 1381738 0.31 42 stress-ng 1381740 1.76 50 stress-ng 40 stress-ng 1381738 0.12 32 stress-ng 1381737 0.23 64 stress-ng 1381738 0.24 61 stress-ng 1381740 0.24 57 stress-ng 1381739 0.29 49 stress-ng
(1)模拟故障使用工具(如 stress-ng)模拟高负载或网络中断,观察通知是否正常触发。 # 模拟高负载stress-ng --cpu 4 --timeout 60s # 模拟网络中断iptables -A INPUT -p tcp --dport 80 -j DROP (2)记录测试结果将测试结果记录到日志中 stress-ng --cpu 4 --timeout 60s if [ $?
(1)模拟故障使用工具(如 stress-ng)模拟高负载,观察仪表盘的变化。 # 模拟高负载stress-ng --cpu 4 --timeout 60s(2)记录测试结果将测试结果记录到日志中,便于后续分析。#! stress-ng --cpu 4 --timeout 60s if [ $?
(1)模拟高负载环境使用工具(如 stress-ng)模拟高负载环境,测试备份任务的表现。 # 安装 stress-ngsudo apt install stress-ng # 模拟 CPU 高负载stress-ng --cpu 4 --timeout 60s(2)记录测试结果将测试结果记录到日志中
(1)模拟高负载使用工具(如 stress-ng)模拟高负载,观察监控工具的表现。 # 模拟高 CPU 负载stress-ng --cpu 4 --timeout 60s(2)记录测试结果将测试结果记录到日志中,便于后续分析。#! stress-ng --cpu 4 --timeout 60s if [ $?
(1)模拟高负载使用 stress-ng 模拟高负载,测试监控工具是否能及时发现异常。 # 模拟 CPU 高负载stress-ng --cpu 4 --timeout 60s (2)记录测试结果将测试结果记录到日志中,便于后续分析。#! stress-ng --cpu 4 --timeout 60s if [ $?
(1)模拟故障使用工具(如 stress-ng)模拟高负载或网络中断。 # 模拟高负载stress-ng --cpu 4 --timeout 60s # 模拟网络中断iptables -A INPUT -p tcp --dport 80 -j DROP (2)记录测试结果将测试结果记录到日志中 stress-ng --cpu 4 --timeout 60s if [ $?
(1)模拟故障使用工具(如 stress-ng)模拟高负载或资源耗尽,观察阈值是否合理。 # 模拟高负载 stress-ng --cpu 4 --timeout 60s # 模拟磁盘空间不足dd if=/dev/zero of=/mnt/testfile bs=1G count=10(2)记录测试结果将测试结果记录到日志中 stress-ng --cpu 4 --timeout 60s if [ $?
(1)模拟故障使用工具(如 stress-ng)模拟高负载或网络中断。 # 模拟高负载 stress-ng --cpu 4 --timeout 60s # 模拟网络中断 iptables -A INPUT -p tcp --dport 80 -j DROP(2)记录测试结果将测试结果记录到日志中 stress-ng --cpu 4 --timeout 60s if [ $?
O问题 解决办法:排查内存 和 I/O sys高 + si 不高 = CPU瓶颈 加CPU 情况3 us用户态高:用户程序计算 GC 资源回收 密集型计算、内存FGC、资源等待(线程池) CPU实战 stress-ng 服务器cpu性能压测工具,模拟系统压力 安装 $ yum install -y epel-release.noarch && yum -y update $ yum install -y stress-ng :进程上下文 进程上下文切换「进程密集型」 # 启动N*10个进程,在只有N核的系统上,会产生大量的进程切换,模拟进程间竞争CPU的场景 $ (( proc_cnt = 'nproc'*10 )); stress-ng --cpu $proc_cnt --pthread 1 --timeout 150 stress-ng: info: [504418] dispatching hogs: 2 cpu, 1 pthread 更换使用CPU的缓存更大的CPU(效果不一定好) 改系统的交互分区 实战三:IO密集型 # 开启1个worker不停的读写临时文件,同时启动 6个workers不停的调用sync系统调用提交缓存 $ stress-ng
最近使用Stress-ng的任务作为负载,再次测试了AMD Embedded R2000 在Linux下的实时性能。Stress-ng能产生更极限的负载,比如DDR带宽使用可以达到10GBps。 00:00:00 [kthreadd] root 2441 851 2441 0 1 4613 5412 0 Jun13 pts/2 00:00:00 stress-ng --vm 2 --vm-bytes 128M root 2448 2441 2448 4 1 4615 1664 0 Jun13 pts/2 21:33:27 stress-ng
,等待I/O也会导致平均负载升高,但CPU使用率不一定很高 大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率会很高 平均负载案例 这里我们需要安装几个工具sysstat、stress、stress-ng 场景二、I/O密集型进程 1、我们使用stress-ng命令,但这次模拟I/O压力,既不停执行sync: #--hdd表示读写临时文件 #-i 生成几个worker循环调用sync()产生io压力 $ stress-ng -i 4 --hdd 1 --timeout 600 2、开启第二个终端运行uptime查看平均负载情况 $ watch -d uptime 10:30:57 up 98 days stress-ng-io Average: 0 11066 0.00 2.72 0.00 0.58 2.72 - stress-ng-io 可以发现是stress-ng