stress 服务器压力测试的工具学习

一、stress 工具介绍

tress 是一种工具,可以对符合 POSIX 标准的操作系统施加可配置数量的 CPU、内存、I/O 或磁盘压力,并报告其检测到的任何错误。

stress 不是一个基准测试。它是由系统管理员用来评估其系统扩展性的工具,由内核程序员用来评估感知性能特征,以及由系统程序员用来暴露只有在系统负载高时才会出现或更频繁出现的错误类别。

二、安装stress

stress项目 git地址:https://github.com/resurrecting-open-source-projects/stress.git

在ubuntu22.04上安装stress

stress目前没有提供安装包,需要下载源码编译安装

  1. 下载编译环境

    bash 复制代码
    root@stress:~# apt-get install gcc g++ make
  2. 将stress源码克隆下来

    github项目拉取不下来可以考虑使用gitee仓库地址:https://gitee.com/cyhjf/stress.git

    bash 复制代码
    root@stress:~# git clone https://gitee.com/cyhjf/stress.git
  3. 编译安装

    bash 复制代码
    root@stress:~# cd stress/
    root@stress:~/stress# ./autogen.sh
    ./autogen.sh: 51: autoreconf: not found
    We have a problem...

    缺少autoreconf命令,下载后继续编译

    autoreconf 是一个用于重新配置源代码树的工具,主要用于基于 autotools(autoconf、automake

    等)构建系统的项目。它会自动运行 autoconf、automake、aclocal 等命令,重新生成 configure

    脚本和相关的构建文件,确保项目的构建系统是完整和正确的。这在项目源代码有更新后,需要重新生成构建配置文件时非常有用。

    bash 复制代码
    root@stress:~/stress# apt -y install autoconf
    root@stress:~/stress# ./autogen.sh
    root@stress:~/stress# ./configure
    root@stress:~/stress# make && make install
    root@stress:~/stress# stress --version
    stress 1.0.7

三、压力测试

stress不提供测试报告,只是压测工具,让服务器处理高压状态暴露出可能出现的错误。

stress参数介绍

bash 复制代码
OPTIONS
       -?, --help
              显示此帮助说明。
       --version
              显示版本声明。
       -v, --verbose
              详细展示
       -q, --quiet
              安静模式
       -n, --dry-run
              查看执行效果,并非已经执行
       -t, --timeout <N>
              超时时间
       --backoff <N>
              在开始工作前先等待微秒级的时间。
       -c, --cpu <N>
              启动 N 个线程,这些线程会持续执行 sqrt() 函数。
       -i, --io <N>
             启动 N 个工作进程,让它们在"sync()"函数上进行运行。
       -m, --vm <N>
              启动若干个工作进程,它们会持续执行内存分配(malloc)和释放(free)操作。
       --vm-bytes <B>
              每个虚拟机工作进程分配字节内存(默认值为 256MB)。
       --vm-stride <B>
              每个字节操作一次(默认值为 4096)
       --vm-hang <N>
              在释放资源前先睡眠 N 秒(默认情况为无延迟,即 0 秒)。
       --vm-keep
              重新使用已损坏的内存,而非进行释放和重新分配操作。
       -d, --hdd <N>
              启动若干个工作进程,它们将执行写入/删除操作。
       --hdd-bytes <B>
             每个 HDD 工作进程写入 B 字节的数据(默认值为 1GB)。该文件将在当前目录中通过 mkstemp() 函数创建。
             
       Note: 数字可能后缀有"s"(秒)、"m"(分钟)、"h"(小时)、"d"(天)、"y"(年)(表示时间)或"B"(字节)、"K"(千字节)、
  1. 测试cpu负载

    查看本机cpu核心数

    bash 复制代码
    root@stress:~/stress# lscpu | grep "On-line"
    On-line CPU(s) list:                  0,1

    开启8个线程,开另一个窗口执行 top -id 1查看cpu负载情况

    默认每个进程都在执行数学运算(计算质数)通过这种方式来模拟 CPU 的高负载,用于测试 CPU 的性能以及在高负载情况下的稳定性等。

    bash 复制代码
    stress --cpu 8 --timeout 60s 
  2. 测试磁盘 io

    创建 4 个io进程,2个写并删除进程,指定每个进程写入100MB 文件并删除,开启另一个窗口使用 vmstat -n 1 持续监控

    bash 复制代码
    stress --io 4 --hdd 2 --hdd-bytes 100M --timeout 60s
  3. 测试内存

    启动2个进程它们会持续执行内存分配(malloc)和释放(free)操作,每个进程分配1G,持续60s

    bash 复制代码
    stress --vm 2 --vm-bytes 1G --vm-keep -t 60s
相关推荐
handler01几秒前
【Linux】信号:内核的“敲门声”
linux·运维·服务器·c++·c·信号·signal
T1mzhou3 分钟前
ARM64 Linux 6.10内核启动流程6-psci.c和ATF/U-Boot 的电源接口
linux·服务器·c语言
是隼人14 分钟前
buuctf-pwn PWN2(整数溢出)题解(学习过程持续更新)
c语言·学习·安全·pwn入门·ctf入门
hui-梦苑20 分钟前
[Math]复合函数极限存在定理:单调连续函数反函数连续性定理推论
学习·数学·定理·函数极限·海涅定理
在线OJ的阿川32 分钟前
基于智慧一考通Web平台的测试报告
功能测试·学习·测试报告
YHHLAI38 分钟前
Danci —— 用 AI 驱动开发一个全栈英语单词学习平台
人工智能·学习
smartpi_ai1 小时前
自学习“放着不动“会自动退出吗?超时退出缺席的交互兜底、退出条件挂串口的状态联动设计
学习·microsoft·交互
苦猿的大模型日记1 小时前
Day58|从0学习 Claude Code(八):对话越聊越长,我给它装了个自动碎纸机
学习
云飞云共享云桌面1 小时前
钣金制造研发优化:不采购传统工作站,实现 SolidWorks 团队共用服务器开展三维建模
运维·服务器·网络·数据库·3d·制造
山甫aa1 小时前
【从零开始的 Web 后端学习】令牌技术一篇搞定(JWT 登录认证保姆级)
后端·学习·spring·web·jwt