stress 命令
基本介绍
stress是 Linux 系统中用于系统压力测试的工具,通过模拟 CPU、内存、I/O 和磁盘等资源的高负载来测试系统的稳定性和性能。它是系统管理员和开发者进行系统性能评估、稳定性测试和资源规划的重要工具。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
语法
stress [OPTIONS]常用选项
CPU 压力测试选项
-c, --cpu N:生成 N 个 CPU 密集型进程--cpu-method METHOD:指定 CPU 压力测试方法(如 sqrt、log、sin 等)
内存压力测试选项
-m, --vm N:生成 N 个内存分配进程--vm-bytes SIZE:每个内存进程分配的内存大小(默认 256MB)--vm-stride SIZE:内存访问步长(默认 4096)--vm-hang N:分配内存后暂停 N 秒再释放(0 表示不释放)--vm-keep:保持分配的内存不释放
I/O 压力测试选项
-d, --hdd N:生成 N 个磁盘 I/O 进程--hdd-bytes SIZE:每个 I/O 进程写入的文件大小(默认 1GB)
时间控制选项
-t, --timeout SECS:运行指定秒数后退出-s, --sleep SECS:在启动每个工作进程前等待指定秒数
其他选项
-q, --quiet:静默模式,减少输出-v, --verbose:详细模式,增加输出-?, --help:显示帮助信息-V, --version:显示版本信息
使用示例
1. 单 CPU 压力测试
stress-c12. 多 CPU 压力测试
stress-c4stress-c8-t603. 内存压力测试
stress-m2stress-m4--vm-bytes 512M stress-m2--vm-bytes 1G --vm-hang04. 磁盘 I/O 压力测试
stress-d1stress-d2--hdd-bytes 2G5. 混合压力测试
stress-c4-m2-d1-t120输出示例:
stress: info: [1234] dispatching hogs: 4 cpu, 2 vm, 0 io, 0 hdd stress: info: [1234] successful run completed in 120s6. 详细模式输出
stress-c2-m1-v-t30输出示例:
stress: info: [1234] using backoff sleep of 2000us stress: info: [1234] dispatching hogs: 2 cpu, 1 vm, 0 io, 0 hdd stress: info: [1235] (cpu) using method 'sqrt' stress: info: [1236] (cpu) using method 'sqrt' stress: info: [1237] (vm) using malloc() stress: info: [1237] (vm) hogging 268435456 bytes stress: info: [1234] successful run completed in 30s7. 保持内存分配不释放
stress-m1--vm-bytes 1G --vm-keep-t608. 指定内存访问步长
stress-m2--vm-bytes 512M --vm-stride1024输出格式说明
基本输出格式
stress: info: [PID] dispatching hogs: X cpu, Y vm, Z io, W hdd stress: info: [PID] successful run completed in Ns状态码
| 状态码 | 说明 |
|---|---|
| 0 | 成功完成 |
| 1 | 参数错误 |
| 2 | 系统资源不足 |
| 3 | 内部错误 |
实用技巧
测试 CPU 性能
# 测试所有 CPU 核心stress-c$(nproc)-t60# 结合 perf 分析 CPU 性能perfstatstress-c4-t30测试内存稳定性
# 分配大量内存并保持stress-m4--vm-bytes 2G --vm-keep-t120# 测试内存分配和释放stress-m2--vm-bytes 1G --vm-hang1-t60测试磁盘 I/O
# 测试磁盘写入性能stress-d2--hdd-bytes 5G-t120# 结合 iostat 分析 I/O 性能iostat-x1&stress-d1--hdd-bytes 2G-t60综合压力测试
# 模拟高负载场景stress-c8-m4-d2-t300# 逐步增加压力foriin1248;doecho"Testing with$iCPU cores..."stress-c$i-t30done监控系统状态
# 后台运行 stress,前台监控stress-c4-t120&top相关命令
stress-ng:增强版 stress 工具cpuburn:CPU 压力测试工具memtester:内存测试工具dd:磁盘 I/O 测试fio:灵活的 I/O 测试工具perf:性能分析工具vmstat:系统资源监控iostat:磁盘 I/O 监控top:实时系统监控
注意事项
- 资源消耗:
stress会消耗大量系统资源,可能影响其他服务 - 测试时长:建议设置合理的测试时间,避免长时间运行
- 内存测试:确保系统有足够的内存,避免触发 OOM killer
- 磁盘测试:确保磁盘有足够的可用空间
- 权限要求:通常不需要 root 权限,但某些系统可能有限制
- 安装方法:
- Debian/Ubuntu:
apt-get install stress - CentOS/RHEL:
yum install stress
- Debian/Ubuntu:
总结
stress是 Linux 系统中简单而强大的压力测试工具。它可以模拟 CPU、内存和磁盘 I/O 的高负载,帮助系统管理员测试系统的稳定性和性能极限。通过合理使用stress,可以评估系统在高负载情况下的表现,为系统优化和资源规划提供依据。