news 2026/4/19 18:09:33

Linux系统稳定性守护者:stress工具实战指南(CPU、内存、IO全场景)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux系统稳定性守护者:stress工具实战指南(CPU、内存、IO全场景)

1. 为什么需要stress工具?

刚入行做运维那会儿,我最怕遇到系统莫名其妙崩溃的情况。有一次半夜被报警叫醒,发现线上服务响应缓慢,查了半天才发现是某个新上线的服务吃光了所有CPU资源。要是早点用stress做个压力测试,可能就能避免这次事故了。

stress就像个系统体检医生,它能给CPU、内存、磁盘这些关键部件施加压力,帮我们提前发现系统的"体能极限"。比如:

  • 新服务器上线前,想知道它到底能扛多少并发?
  • 系统扩容后,想确认新增的资源真的起作用了?
  • 遇到性能瓶颈,想找出到底是CPU、内存还是磁盘拖了后腿?

这些场景下,stress都能大显身手。它最大的特点是操作简单但效果直接,几个命令就能让系统"大汗淋漓",配合top、htop这些监控工具,系统状态一目了然。

2. 快速安装stress工具

2.1 不同系统的安装方法

在CentOS 7上安装最简单,直接使用预编译的rpm包:

wget http://fr2.rpmfind.net/linux/dag/redhat/el7/en/x86_64/dag/RPMS/stress-1.0.2-1.el7.rf.x86_64.rpm rpm -Uivh stress-1.0.2-1.el7.rf.x86_64.rpm

如果是较新的系统,建议用yum安装:

yum install -y epel-release yum install -y stress

想要最新版的功能可以编译安装stress-ng(stress的增强版):

wget https://kernel.ubuntu.com/~cking/tarballs/stress-ng/stress-ng-0.15.06.tar.gz tar -xzf stress-ng-0.15.06.tar.gz cd stress-ng-0.15.06 make && sudo make install

2.2 验证安装成功

装好后运行这个命令检查版本:

stress --version # 或者如果是stress-ng stress-ng --version

3. CPU压力测试实战

3.1 基础CPU压力测试

想让CPU火力全开很简单:

stress -c 4

这个命令会创建4个worker进程不停计算平方根,把CPU占满。数字4表示要占用的CPU核心数,根据你的机器配置调整。

测试时建议开两个终端窗口:

  1. 一个运行stress
  2. 一个运行htop观察CPU使用率

你会看到所有CPU核心都变成100%红色,就像这样:

CPU1 [||||||||||||||||||||||||||||||||||||||||||||||||||100.0%] CPU2 [||||||||||||||||||||||||||||||||||||||||||||||||||100.0%]

3.2 高级CPU测试技巧

如果想更精确控制CPU负载,可以用stress-ng:

stress-ng --cpu 2 --cpu-load 80

这个命令会让2个CPU核心保持在80%左右的负载,模拟真实业务场景。

还可以测试CPU缓存压力:

stress-ng --cache 2 --cache-level 1

这个命令会专门对L1缓存施加压力,适合测试CPU密集型应用。

4. 内存压力测试详解

4.1 基础内存测试

模拟内存不足的场景特别有用:

stress --vm 4 --vm-bytes 1G --vm-keep

这个命令会:

  • 启动4个worker进程(--vm 4)
  • 每个分配1GB内存(--vm-bytes 1G)
  • 持续占用不释放(--vm-keep)

用free -h命令观察,会发现可用内存(available)快速下降。当内存不足时,系统会开始用swap,这时用top能看到swap使用量增加。

4.2 内存测试注意事项

  1. 不要一次性申请超过物理内存的量,否则可能触发OOM killer直接杀进程
  2. 测试时可以配合vmstat观察内存和swap变化:
    vmstat 1
  3. 如果想模拟内存泄漏场景,可以去掉--vm-keep参数,让内存不断分配释放

5. 磁盘IO压力测试技巧

5.1 基础IO测试

这个命令会产生4个进程不停调用sync:

stress -i 4

用iostat观察磁盘利用率:

iostat -x 1

重点看%util这一列,数值越高表示磁盘越忙。

5.2 文件写入测试

更真实的测试是实际写文件:

stress -d 1 --hdd-bytes 10G

这个命令会:

  • 创建1个worker进程(-d 1)
  • 每次写入10GB大小的文件(--hdd-bytes 10G)

配合iotop工具,可以清楚看到哪个进程在疯狂写磁盘:

iotop -o

5.3 精准磁盘测速

stress的磁盘测试可能不够准确,这时可以用dd命令:

# 测试纯写入速度(写入缓存) time dd if=/dev/zero of=./testfile bs=1G count=1 oflag=direct # 测试真实磁盘写入速度 time dd if=/dev/zero of=./testfile bs=1G count=1 conv=fsync

注意两者的区别:oflag=direct会绕过系统缓存,conv=fsync会在最后同步到磁盘。

6. 综合测试与监控技巧

6.1 同时测试多个资源

stress最强大的地方是可以组合测试:

stress -c 4 -m 2 --vm-bytes 1G -i 1 -d 1 --hdd-bytes 10G

这个命令会同时:

  • 占用4个CPU核心
  • 占用2GB内存
  • 产生1个IO进程
  • 进行磁盘写入测试

6.2 推荐监控组合

测试时要多开几个终端窗口监控:

  1. CPU监控:
    htop
  2. 内存监控:
    watch -n 1 "free -h"
  3. 磁盘监控:
    iostat -x 1
  4. 综合监控:
    dstat -cmdr --disk-util

6.3 测试时长控制

默认stress会一直运行,可以用-t参数指定时长:

stress -c 4 -t 60s # 测试60秒

测试完成后,所有资源会自动释放,系统应该恢复正常状态。如果发现资源没释放,可能是stress进程异常退出了,可以用ps aux | grep stress检查并手动kill掉。

7. 生产环境使用建议

  1. 不要在正在运行的业务服务器上直接测试,最好用专门的测试环境
  2. 测试前先保存重要数据,磁盘测试可能会写满磁盘
  3. 内存测试要循序渐进,避免直接触发OOM导致系统崩溃
  4. 测试时记录系统基线数据,方便对比分析
  5. 长期运行测试建议用nohup:
    nohup stress -c 4 > stress.log 2>&1 &
  6. 测试完成后记得清理测试文件:
    rm -f testfile test.dd

我在实际工作中发现,很多性能问题都是资源竞争导致的。比如有一次发现服务响应慢,用stress单独测试CPU、内存都没问题,但组合测试时就出现卡顿,最后发现是磁盘IO瓶颈。所以建议大家多做组合测试,才能发现真正的系统瓶颈。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 18:08:18

从蓝桥杯LQ0274看C++字符串处理与密码生成算法

1. 蓝桥杯LQ0274题目解析 这道题目来自蓝桥杯2012年初赛C A组,考察的是字符串处理和数字运算的基本功。题目要求将输入的拼音字符串转换为6位数字密码,整个过程分为三个关键步骤:分组、ASCII码累加和数字缩位。 我第一次看到这个题目时&#…

作者头像 李华
网站建设 2026/4/19 17:59:02

2025届学术党必备的六大AI辅助论文平台推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 就当下所处情境而言,AI类工具已然能够针对毕业论文展开选题、文献梳理、初稿撰写…

作者头像 李华
网站建设 2026/4/19 17:55:49

【技术解析】CLIP:从图文对比预训练到零样本迁移的实践指南

1. CLIP模型的核心思想与技术突破 CLIP(Contrastive Language-Image Pretraining)是OpenAI在2021年提出的多模态预训练模型,它的核心创新点在于通过对比学习的方式,将图像和文本映射到同一个特征空间。这种设计让模型能够理解图像…

作者头像 李华