当前位置: 首页 > news >正文

linux服务器stress-ng的使用

  1. 安装方法

• Ubuntu/Debian:

  sudo apt update && sudo apt install stress-ng -y

• CentOS/RHEL(需EPEL源):

  sudo yum install epel-release -ysudo yum install stress-ng -y

• 源码编译(适合定制化需求):

  wget https://fossies.org/linux/privat/stress-ng-最新版本.tar.gztar -xzf stress-ng-*.tar.gzcd stress-ng-*make && sudo make install#验证安装:stress-ng --version
  1. 核心功能与命令

CPU压力测试,模拟服务器cpu使用率100%

• 基础命令(满载所有CPU):

# $(nproc)指的是服务器核数,如有8个核,就写8,全部占满
stress-ng --cpu $(nproc) --timeout 60s

• 控制负载百分比(如70%利用率):

  stress-ng --cpu 4 --cpu-load 70 --timeout 2m

• 指定算法(如矩阵乘法、FFT):

  stress-ng --cpu 4 --cpu-method matrixprod --timeout 600s  # 矩阵运算stress-ng --cpu 4 --cpu-method fft --timeout 2m           # 快速傅里叶变换

通过top或htop监控CPU占用。

内存压力测试

• 动态分配内存(默认反复分配/释放):

  stress-ng --vm 4 --vm-bytes 1G --timeout 100sstress-ng --vm 4 --vm-bytes 1G --timeout 100s --vm-hang 100s

timeout和vm-hang参数说明:

​1. --timeout(全局超时)​​​作用范围​:控制整个压力测试进程的运行时长。
​行为​:
指定测试的总持续时间(例如 100s 表示 100 秒)。
时间到达后,​所有压力测试子进程(包括 CPU、内存、I/O 等)均会强制终止,测试结束。​示例​:
--timeout 100s 表示整个测试会在 100 秒后自动停止。​2. --vm-hang(内存测试局部挂起)​​​作用范围​:仅针对内存压力测试子进程​(由 --vm 创建的进程)。
​行为​:内存子进程在每次分配内存(malloc)后,会挂起(睡眠)指定时长​(例如 100s),期间不释放内存。
挂起结束后,释放内存并重新开始分配-挂起循环,直到全局 --timeout 触发终止。​目的​:模拟内存被长期占用的场景(如内存泄漏或缓存驻留),而非频繁分配/释放。

• 持续占用内存(避免释放):

stress-ng --vm 2 --vm-bytes 2G --vm-keep --timeout 5m

• 内存加压后休眠(低CPU占用):

  stress-ng --vm 4 --vm-bytes 512M --vm-hang 30 --timeout 2m

使用free -h或vmstat监控内存使用。

磁盘I/O测试

• 同步I/O压力(频繁调用sync):

  stress-ng --io 4 --timeout 60s

• 文件读写压力(创建/删除大文件):

stress-ng --hdd 3 --hdd-bytes 20G --timeout 180s  # 写入20GB文件
# 也可以使用dd命令,创建名为test*.txt的文件,如test1.txt,创建50个,每个文件20G,共1000G
dd if=/dev/zero of=test%s.txt count=50 bs=20G

监控工具:iostat或iotop。

• 混合负载测试

stress-ng --cpu 4 --io 2 --vm 1 --vm-bytes 1G --timeout 300s

同时加压CPU、I/O和内存,模拟复杂场景。

  1. 高级参数与场景

• 超时控制:

–timeout支持单位(s/m/h),如–timeout 1h30m。
• 性能指标输出:

–metrics-brief输出测试摘要(如bogo操作次数):

  stress-ng --cpu 4 --timeout 60s --metrics-brief

• 自定义测试时长:

通过–vm-ops或–cpu-ops按操作次数结束测试:

  stress-ng --hdd 5 --hdd-ops 100000  # 完成10万次操作后停止

• 低负载模拟(开发调试):

  stress-ng --cpu 2 --cpu-load 30 --timeout 10m  # 30%低负载
  1. 使用注意事项

  2. 避免生产环境直接使用:
    压力测试可能导致系统崩溃或数据丢失,建议在虚拟机或测试环境中操作。

  3. 资源分配建议:
    • 内存测试时,分配量不超过总内存的80%(避免OOM Kill)。

    • 磁盘测试预留足够空间(如–hdd-bytes值需小于磁盘剩余容量)。

  4. 监控关键指标:
    • CPU/内存:top、htop、free。

    • 磁盘I/O:iostat -dx 1。

    • 温度:sensors(防止过热)。

  5. 性能影响分析:
    • CPU加压对应用延迟影响显著(如8核满载时小模型延迟增加5倍)。

    • 内存加压对延迟影响较小,但高占用时仍会降低整体性能。

  6. 典型应用场景

• 服务器稳定性验证:

混合负载测试72小时,观察内核错误或硬件故障。
• 资源竞争模拟:

在部署新服务前,模拟高负载下现有服务的性能表现。
• 开发板压力测试:

ARM平台交叉编译后验证硬件可靠性(如自动驾驶芯片)。
• 散热能力测试:

结合cpuburn工具最大化CPU发热,检测散热系统。

⚠️ 重要提示:测试结束后,用killall stress-ng或pkill stress-ng确保进程完全退出,避免残留负载。

更多参数详见手册:man stress-ng 或 https://github.com/ColinIanKing/stress-ng。

http://www.lryc.cn/news/590439.html

相关文章:

  • WAMP允许远程访问
  • 30 天自制 C++ 服务器--Day3
  • 用python实现自动化布尔盲注
  • RHCSA(软链接与硬链接)
  • 高性能架构模式——高性能缓存架构
  • sqli-labs靶场通关笔记:第23关 注释符过滤
  • 二、CV_AlexNet
  • 81、面向服务开发方法
  • 关于SaaS业务模式及其系统架构构建的详细解析
  • 横向移动(下)
  • IPD-流程设计-TE角色说明书参考模板
  • 多维傅里叶变换性质与计算
  • CSS3动画基本使用——页面一打开盒子就从左边走向右边
  • 【尝试】本地部署openai-whisper,通过 http请求识别
  • C++-linux系统编程 11.常见问题与答案
  • 创建SprngBoot项目的四种方式
  • 降本增效利器:汽车制造中EtherCAT转PROFIBUS DP网关应用探析
  • 快速开发汽车充电桩的屏幕驱动与语音提示方案
  • 使用 SeaTunnel 建立从 MySQL 到 Databend 的数据同步管道
  • Mysql系列--1、库的相关操作
  • 在 IntelliJ IDEA 中添加框架支持的解决方案(没有出现Add Framework Support)
  • AI学习笔记三十一:YOLOv8 C++编译测试(OpenVINO)
  • 使用Telegraf从工业物联网设备收集数据的完整指南
  • Beautiful Soup(BS4)
  • ABP VNext + EF Core 二级缓存:提升查询性能
  • AI炒作,AGI或在2080年之前也无法实现,通用人工智能AGI面临幻灭
  • 【RTSP从零实践】13、TCP传输AAC格式RTP包(RTP_over_TCP)的RTSP服务器(附带源码)
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | AutoTextEffect(自动打字机)
  • 使用Whistle自定义接口返回内容:Mock流式JSON数据全解析
  • SQL性能分析