stress是一个简单的命令行工具,用于对 Linux 系统进行压力测试(stress testing),即主动让系统资源(如 CPU、内存、I/O、磁盘等)处于高负载状态,以测试系统的稳定性、可靠性或者用于复现某些在高负载下才出现的问题。
它常被系统管理员、开发人员、测试工程师用于:
- 测试服务器的稳定性;
- 模拟高负载环境;
- 复现系统在高压力下的异常行为;
- 性能调优前的基准测试;
- 测试监控告警系统的有效性;
命令行
Usage: stress[OPTION[ARG]]... -?,--helpshow thishelpstatement--versionshow version statement -v,--verbosebe verbose -q,--quietbe quiet -n, --dry-run show what would have beendone-t,--timeoutNtimeoutafter N seconds--backoffNwaitfactor of N microseconds before work starts -c,--cpuN spawn N workers spinning on sqrt()-i,--ioN spawn N workers spinning on sync()-m,--vmN spawn N workers spinning on malloc()/free()--vm-bytes B malloc B bytes per vm worker(default is 256MB)--vm-stride Btoucha byte every B bytes(default is4096)--vm-hang NsleepN secs beforefree(default none,0is inf)--vm-keep redirty memory instead of freeing and reallocating -d,--hddN spawn N workers spinning on write()/unlink()--hdd-bytes BwriteB bytes per hdd worker(default is 1GB)Example: stress--cpu8--io4--vm2--vm-bytes 128M--timeout10s选项解释
| 选项 | 说明 |
|---|---|
-?,--help | 显示帮助信息(即当前你正在看的这类说明) |
--version | 显示stress工具的版本信息 |
-v,--verbose | 详细模式:运行时输出更多信息,便于观察压力测试过程 |
-q,--quiet | 静默模式:不输出任何信息,适合在脚本中安静地运行压力测试 |
-n,--dry-run | 试运行模式:仅显示将会执行的操作,但不会真正执行压力测试,用于检查命令配置 |
-t,--timeout N | 设置压力测试的超时时间,单位为秒;测试将在 N 秒后自动停止 |
--backoff N | 在开始施加压力前,先等待N 微秒(百万分之一秒),作为启动前的延迟因子;控制任务启动节奏 |
-c,--cpu N | 启动N 个 CPU 压力进程,每个进程反复计算平方根(sqrt()),用于让 CPU 达到高负载 |
-i,--io N | 启动N 个 I/O 压力进程,每个进程反复调用sync()系统调用,模拟磁盘 I/O 压力 |
-m,--vm N | 启动N 个内存压力进程,每个进程通过反复调用malloc()和free()来分配和释放内存,测试内存管理性能与压力 |
--vm-bytes B | 每个--vm内存进程分配的内存大小,比如256M、1G;默认是256MB |
--vm-stride B | 每隔多少字节触摸一次内存(即模拟访问),默认是 4096 字节(4KB);用于控制内存访问模式 |
--vm-hang N | 每个--vm进程在调用free()之前先休眠 N 秒;默认不等待(即立刻释放);设为0表示无限等待;可用于模拟长时间占用内存 |
--vm-keep | 保持内存脏状态:不释放并重新分配内存,而是反复对已分配的内存进行“弄脏”操作(写入),用于持续内存压力测试,而不是频繁申请释放 |
-d,--hdd N | 启动N 个硬盘(文件写)压力进程,每个进程通过反复调用write()写文件,然后unlink()删除,模拟磁盘写压力 |
--hdd-bytes B | 每个--hdd进程每次写入的文件大小,比如512M、1G;默认是1GB |
示例
示例 1:仅对 CPU 进行压力测试(启动 4 个 CPU 压力进程)
stress --cpu 4- 启动 4 个进程,每个都做大量计算,让 CPU 占用飙升;
- 按
Ctrl+C停止;
示例 2:CPU + 内存 压力测试(CPU 2个 + 内存1个,分配512MB)
stress --cpu 2 --vm 1 --vm-bytes 512M- 2 个进程压 CPU;
- 1 个进程分配并写入 512MB 内存,模拟内存压力;
示例 3:带超时限制的测试(比如运行 60 秒后自动停止)
stress --cpu 2 --vm 1 --vm-bytes 256M --timeout 60- CPU 压力 2 核;
- 内存压力 1 个进程,分配 256MB;
- 整体运行60 秒后自动退出;
示例 4:模拟磁盘 I/O 压力(使用 --io)
stress --io 2- 启动 2 个进程频繁调用
sync(),给磁盘 I/O 带来压力;
示例 5:模拟磁盘写压力(–hdd)
stress --hdd 1- 启动 1 个进程不断写入临时文件,模拟磁盘写入负载;
文件通常写在
/tmp下,测试完毕可能会留下临时文件,可手动清理。
示例 6:组合压力测试(CPU + 内存 + I/O,带超时)
stress --cpu 4 --vm 2 --vm-bytes 1G --io 1 --timeout 120- 4 个 CPU 压力进程;
- 2 个内存压力进程,每个分配 1GB;
- 1 个 I/O 压力进程;
- 总共运行120 秒后自动停止;