stress-ng 是什么
stress-ng 是功能较全的压力测试工具,能制造可控的 CPU、内存、磁盘 IO 与网络负载。它常用来验证扩容阈值、复现与负载相关的故障,以及确认监控与告警在真实压力下会不会触发。相比早期的 stress,它的压力类型与统计指标都更丰富。
基本信息
| 用途 | 制造可控负载以验证系统行为 |
|---|---|
| 语法 | stress-ng --cpu N --vm N --hdd N --timeout 60s |
| 获取方式 | 发行版源或 EPEL 中提供 |
| 输出统计 | 加 --metrics 可打印各类压力的统计摘要 |
典型使用场景
- 新机型或新规格上线前验证负载表现
- 复现线上与负载相关的性能问题
- 验证监控、告警与自动扩容能否按预期触发
- 对比不同内核参数或调度策略下的系统表现
- 演练容量水位与降级逻辑
- 观察应用在资源受限条件下的行为
常用示例
常用示例
stress-ng --cpu 4 --timeout 60s --metrics # 4 核满载 60 秒并输出指标
stress-ng --vm 2 --vm-bytes 1G --timeout 120s # 内存压力
stress-ng --hdd 2 --hdd-bytes 512M --timeout 120s # 磁盘 IO 压力
stress-ng --cpu 4 --io 2 --vm 1 --timeout 60s # 组合压力
top # 另开终端观察
vmstat 1 # 看系统整体运行状态
iostat -xz 1 # 看磁盘与 IO 等待常见压力类型
| 参数 | 压力方向 | 观察指标 |
|---|---|---|
| --cpu N | CPU 满载 | 负载均值与 CPU 使用率 |
| --vm N | 内存分配与回收 | 可用内存、swap 与 OOM 记录 |
| --hdd N | 磁盘读写 | IO 等待与吞吐 |
| --io N | 同步 IO 调用 | 系统态 CPU 占比 |
| --timeout | 持续时间 | 到点自动结束,避免忘停 |
压测前先定义结论标准:目标延迟分位、期望吞吐、告警是否触发。没有判据的压测跑完也得不到结论,只是白占资源。
只在测试环境或已获授权的环境执行:生产上直接压测会吃掉业务余量,很容易演变成真实故障。
云主机常见资源超卖,压测结果波动较大;同一配置建议重复多次观察结果分布,而不是拿一次数字当作能力上限。
压测期间同步抓取系统指标(vmstat、iostat、top)与业务指标,才能把资源变化与体验变化对应起来;只有一端的数据很难得出可用结论。