stress-Linux系统压力测试工具使用及系统负载很高的几种场景测试
安装
yum install stress stress-ng -y
stess-ng是stress的下一代,功能更加完善
常用选项
-c,--cpu:代表进程个数(每个进程会占用一个cpu,当超出cpu个数时,进程间会互相争用cpu)
-t,--timeout:测试时长(超出这个时间后自动退出)
-i,--io:表示调用sync(),它表示通过系统调用 sync() 来模拟 I/O 的问题;
但这种方法实际上并不可靠,因为 sync() 的本意是刷新内存缓冲区的数据到磁盘中,以确保同步。
如果缓冲区内本来就没多少数据,那读写到磁盘中的数据也就不多,也就没法产生 I/O 压力。
这一点,在使用 SSD 磁盘的环境中尤为明显,很可能你的 iowait 总是 0,却单纯因为大量的系统调用,导致了系统CPU使用率 sys 升高。
这种情况,推荐使用 stress-ng 来代替 stress。
场景一:CPU 密集型进程(使用CPU的进程)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 使用2颗CPU [root@nginx ~] # stress --cpu 2 --timeout 600 [root@nginx ~] # uptime 10:33:44 up 28 min, 4 users , load average: 1.99, 1.39, 0.81 [root@nginx ~] # mpstat -P ALL 5 1 Average: CPU %usr % nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: all 50.05 0.00 0.08 0.00 0.00 0.00 0.00 0.00 0.00 49.87 Average: 0 0.07 0.00 0.17 0.00 0.00 0.01 0.00 0.00 0.00 99.75 Average: 1 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: 3 0.08 0.00 0.15 0.01 0.00 0.01 0.00 0.00 0.00 99.76 [root@nginx sysstat-12.1.5] # pidstat -u 5 1.通过uptime可以观察到,系统平均负载很高,通过mpstat观察到2个CPU使用率很高,平均负载也很高,而iowait为0,说明进程是CPU密集型的; 2.是由进程使用CPU密集导致系统平均负载变高、CPU使用率变高; 3.可以通过pidstat查看是哪个进程导致CPU使用率较高 |
场景二:I/O 密集型进程(等待IO的进程)
场景三:大量进程的场景(等待CPU的进程->进程间会争抢CPU)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 11:23:12 AM 0 23613 25.15 0.00 0.00 75.25 25.15 1 stress 11:23:12 AM 0 23614 24.95 0.00 0.00 75.45 24.95 0 stress 11:23:12 AM 0 23615 25.15 0.00 0.00 75.25 25.15 0 stress 11:23:12 AM 0 23616 24.95 0.00 0.00 74.65 24.95 0 stress 11:23:12 AM 0 23617 25.15 0.00 0.00 74.85 25.15 1 stress 11:23:12 AM 0 23618 24.75 0.00 0.00 75.25 24.75 1 stress 11:23:12 AM 0 23619 24.75 0.00 0.00 75.85 24.75 2 stress 11:23:12 AM 0 23620 24.55 0.00 0.00 75.65 24.55 2 stress 11:23:12 AM 0 23621 25.35 0.00 0.00 74.85 25.35 3 stress 11:23:12 AM 0 23622 25.35 0.00 0.00 74.45 25.35 3 stress 11:23:12 AM 0 23623 25.15 0.00 0.00 75.65 25.15 1 stress 11:23:12 AM 0 23624 25.35 0.00 0.00 74.45 25.35 3 stress 11:23:12 AM 0 23625 24.55 0.00 0.00 75.45 24.55 2 stress 11:23:12 AM 0 23626 24.95 0.00 0.00 75.45 24.95 0 stress 11:23:12 AM 0 23627 24.75 0.00 0.00 75.65 24.75 3 stress 11:23:12 AM 0 23628 24.55 0.00 0.00 75.05 24.55 2 stress 11:23:12 AM 0 23803 0.20 0.40 0.00 0.80 0.60 2 watch 11:23:12 AM 0 24022 0.00 0.20 0.00 0.00 0.20 2 pidstat 1.通过uptime观察到系统平均负载很高,通过mpstat观察到CPU使用率也很高,iowait为0,说明此进程是CPU密集型的,或者在进行CPU的争用; 2.通过pidstat -u观察到wait指标很高,则说明进程间存在CPU争用的情况,可以判断系统中存在大量的进程在等待使用CPU; 3.大量的进程,超出了CPU的计算能力,导致的系统的平均负载很高; |
场景四:单进程多线程(大量线程造成上下文切换,从而造成系统负载升高)
1 2 3 4 5 6 7 8 9 | 可以看到无进程间的上下文切换(默认是进程间的) [root@nginx ~] # pidstat -w 3 04:45:46 PM UID PID cswch /s nvcswch /s Command 04:45:49 PM 0 9 2.67 0.00 rcu_sched 04:45:49 PM 0 11 0.33 0.00 watchdog /0 04:45:49 PM 0 12 0.33 0.00 watchdog /1 04:45:49 PM 0 14 0.67 0.00 ksoftirqd /1 04:45:49 PM 0 17 0.33 0.00 watchdog /2 04:45:49 PM 0 22 0.33 0.00 watchdog /3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 04:45:49 PM 0 556 19.67 0.00 xfsaild /dm-0 04:45:49 PM 0 21287 0.33 0.00 sshd 04:45:49 PM 0 26834 1.00 0.00 kworker /u256 :0 04:45:49 PM 0 30955 1.00 0.00 kworker /2 :2 04:45:49 PM 0 31207 1.67 0.00 kworker /0 :2 04:45:49 PM 0 31778 2.00 0.00 kworker /3 :1 04:45:49 PM 0 32262 0.33 0.00 pidstat 04:45:49 PM 0 32263 1.00 0.00 kworker /1 :1 04:45:49 PM 0 32350 0.33 0.00 kworker /3 :0 可以看到存在大量的非自愿上下文切换(表示线程间争用引起的上下文切换,造成系统负载升高) [root@nginx ~] # pidstat -w -t 3 04:48:35 PM UID TGID TID cswch /s nvcswch /s Command 04:48:41 PM 0 32597 - 1.67 0.33 sysbench |
1 2 3 4 5 6 7 8 9 10 11 | 04:48:41 PM 0 - 32597 1.67 0.33 |__sysbench 04:48:41 PM 0 - 32598 8932.67 63606.33 |__sysbench 04:48:41 PM 0 - 32599 10554.00 52275.33 |__sysbench 04:48:41 PM 0 - 32600 10941.00 49976.67 |__sysbench 04:48:41 PM 0 - 32601 9393.67 50796.33 |__sysbench 04:48:41 PM 0 - 32602 10196.67 50815.33 |__sysbench 04:48:41 PM 0 - 32603 9538.67 54755.00 |__sysbench 04:48:41 PM 0 - 32604 10112.33 50476.67 |__sysbench 04:48:41 PM 0 - 32605 9135.67 53922.00 |__sysbench 04:48:41 PM 0 - 32606 10506.33 55677.00 |__sysbench 04:48:41 PM 0 - 32607 10346.33 55691.67 |__sysbench |
1 | <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?