zoukankan      html  css  js  c++  java
  • Linux:linux服务器稳定性压力测试工具stress安装与使用

    stress是一个linux下的压力测试工具,专门为那些想要测试自己的系统,完全高负荷和监督这些设备运行的用户。

    1. stress1.0.4下载地址

    下载:https://fossies.org/linux/privat/stress-1.0.4.tar.gz

    2.安装stress

    将下载的stress-1.0.4.tar.gz复制到“/usr/local/src/”目录下
    #切换目录
    cd /usr/local/src
    
    #解压tar.gz包
    tar -xzpvf stress-1.0.4.tar.gz
    
    #进入解压目录
    cd stress-1.0.4
    
    #开始安装
    ./configure
    
    make
    
    make check
    
    make install
    
    make clean

     3.stress使用说明

    Stress 选项说明:
    
    -?
    
    --help #显示帮助信息
    
    ----------------------------------------------
    
    --version #显示软件版本信息
    
    ----------------------------------------------
    
    -v
    
    --verbose #显示详细运行信息
    
    ----------------------------------------------
    
    -q
    
    --quiet  #不显示运行信息
    
    ----------------------------------------------
    
    -n
    
    --dry-run  #显示已经完成的指令执行情况
    
    ----------------------------------------------
    
    -t secs
    
    --timeout secs  #指定运行多少秒
    
    ----------------------------------------------
    
    --backoff usecs  #等待usecs微秒后才开始执行
    
    ----------------------------------------------
    
    -c forks
    
    --cpu forks  #产生多个处理sqrt()函数的CPU进程
    
    ----------------------------------------------
    
    -i forks
    
    --io forks  #产生多个处理sync()函数的磁盘I/O进程
    
    ----------------------------------------------
    
    -m forks
    
    --vm forks  #产生多个处理malloc()内存分配函数的进程
    
    ----------------------------------------------
    
    --vm-bytes bytes  #指定内存的Bytes数,默认值是1(与--vm-hang配合使用)
    
    ----------------------------------------------
    
    --vm-hang  #指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,这有利于模拟只有少量内存的机器;例如,下面命令运行时就会分配到并一直持有256M内存,直到进程被终止;
    
    % stress --vm 2 --vm-bytes 128M --vm-hang
    
    ----------------------------------------------
    
    -d forks
    
    --hdd forks  #产生多个执行write()函数的进程
    
    ----------------------------------------------
    
    --hdd-bytes bytes  #指定写的Bytes数,默认是1GB
    
    ----------------------------------------------
    
    --hdd-noclean  #不要将写入随机ASCII数据的文件Unlink
    注意:时间单位可以为秒s,分m,小时h,天d,年y,文件大小单位可以为K,M,G
    
    示例:
    一个简单的例子就是你只想给系统一个随机负载,此命令产生13个进程,每个进程都反复不停的计算由rand()产生随机数的平方根
    
    ----------------------------------------------
    
    % stress -c 13  #Stress支持很多选项,可以指定仅显示有限的运行信息,以下命令产生1024个进程,仅显示出错信息
    
    ----------------------------------------------
    
    % stress --quiet --cpu 1k  #为了观察系统何时达到I/O极限,可以使用选项“-i”,以下指令产生4个进程,每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上
    
    ----------------------------------------------
    
    % stress -i 4  #可以在一条指令中使用多个消耗资源的选项,如下指令表示显示运行信息,一分钟后终止运行(13个CPU进程,4个I/O进程)
    
    ----------------------------------------------
    
    % stress -c 13 -i 4 --verbose --timeout 1m  #你也可以指定向磁盘中写入固定大小的文件,这个文件通过调用mkstemp()产生并保存在当前目录下,默认是文件产生后就被执行unlink(清除)操作,但是你可以使用“--hdd-bytes”选项将产生的文件全部保存在当前目录下,这会将你的磁盘空间逐步耗尽
    
    ----------------------------------------------
    
    % stress -d 1 --hdd-noclean --hdd-bytes 13  #可以支持生成大文件
    
    % stress -d 1 --hdd-noclean --hdd-bytes 3G
    
    ----------------------------------------------

    4.测试方式

    建议开启三个 Xshell连接终端。

    第一个终端

    测试一

    运行 stress 命令,模拟一个 CPU 使用率 100%,运行10分钟的场景

    #一个cpu使用率100%,运行10分钟场景
    stress --cpu 1 --timeout 600

    测试二

    主要测试硬盘,生成文件放到硬盘内

    #var下创建测试目录
    mkdir -p /var/test 
    
    #切换到test目录
    cd /var/test
    
    #测试硬盘,生成800k大小的文件,写到硬盘内
    stress -d 1 --hdd-noclean --hdd-bytes 800k 

    测试三

    提升cpu与cpu使用率的测试 ,生成文件放到硬盘内

    #还是切换到 /var/test/ 测试目录下,没有的新建一个
    cd /var/test
    
    #增大“c”值提高cpu数;增大“i”值提高CPU的使用率;增大“d”值会减少CPU的使用率,从而增加对硬盘的数据写入量,但是对内存要求不高
    stress -c 4 -i 4 -d 1 --hdd-noclean --hdd-bytes 800k

    测试四

    提升vm值,测试内存使用率,生成文件放到硬盘内

    #还是切换到 /var/test/ 测试目录下,没有的新建一个
    cd /var/test
    
    #增大“vm”、“--vm-bytes” 或 “—vm-hang” 选项的值都会提高内存的使用率
    stress -c 1 -i 1 --vm 6 --vm-bytes 128M -d 2 --hdd-noclean --hdd-bytes 800k
    
    #注意:
    #运行过程中,您可以通过进入其他终端,执行“df”命令,查看磁盘是否已满(也就是/var/test是否已满),如果磁盘已满,则程序“stress”会报错并终止。
    #如果报错终止执行以下操作,清空测试目录,如果有需要;进入到测试目录下(/var/test或者别的目录),继续运行“stress”进行测试
    
    #给/var/test赋权限
    chmod -R 755 /var/test
    
    #清空目录
    rm -R -f /var/test/
    
    #切换目录
    cd /var/test/
    
    #接着测试(vm-bytes可以下降点继续测试)
    stress -c 1 -i 1 --vm 6 --vm-bytes 128M -d 2 --hdd-noclean --hdd-bytes 800k

    第二个终端:

    运行 uptime 查看平均负载的变化情况

    #查看平均负载变化
    uptime

    查看动态平均负载情况命令如下:

    #动态平均负载情况
    watch -d uptime

    第三个终端:

    mpstat命令监控cpu

    运行 mpstat 查看 CPU 使用率的变化情况

    #查看cpu使用率的变化情况
    mpstat

    监控所有cpu,每隔一段时间输出一组数据

    #监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
    mpstat -P ALL 5

    pidstat命令监控cpu

    pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。

    #pidstat 的用法:
    
    pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]

    常用的参数:

      • -u:默认的参数,显示各个进程的cpu使用统计
      • -r:显示各个进程的内存使用统计
      • -d:显示各个进程的IO使用情况
      • -p:指定进程号
      • -w:显示每个进程的上下文切换情况
      • -t:显示选择任务的线程的统计信息外的额外信息
      • -T { TASK | CHILD | ALL }
        这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
        注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
      • -V:版本号
      • -h:在一行上显示了所有活动,这样其他程序可以容易解析。
      • -I:在SMP环境,表示任务的CPU使用率/内核数量
      • -l:显示命令名和所有参数

    查看所有CPU使用情况

    #查看所有进程的 CPU 使用情况( -u -p ALL)
    #pidstat 和 pidstat -u -p ALL 是等效的。
    #pidstat 默认显示了所有进程的cpu使用率。
    
    pidstat
    或
    pidstat -u -p ALL

    5秒查询一次,共查询一次,所有cpu使用情况

    #设置5秒间隔,共查询1次
    pidstat 5 1

    5.卸载stress方式

    如果不想保留在服务器内,可以通过如下方式卸载

    #卸载命令
    
    rm -R -f /usr/local/src/stress-0.18.1/
    
    rm -f /usr/local/bin/stress
    
    rm -f /usr/local/src/stress-0[1].18.1.tar.gz

    6.保存监测数据

    可以查看我的另一篇文章:Linux:监测收集linux服务器性能数据工具Sysstat的使用与安装

    文章整合至:https://blog.csdn.net/cojn52/article/details/89680093https://www.cnblogs.com/wx170119/p/11411312.html

  • 相关阅读:
    C# RSA
    C# DES
    C# AES 加密
    【数据结构与算法分析(c语言)】 链表的游标实现 .h文件方法全实现
    ubuntu 14.04和16.04 解决 sql 导入中文乱码问题
    React Native 错误:A problem occurred configuring project ':app'. 和Execution failed for task ‘XXX’
    React Native与夜神模拟器连接第一次白屏没有显示Welcome to React Native
    吴恩达【深度学习工程师】 04.卷积神经网络 第三周目标检测 (2)YOLO算法
    吴恩达【深度学习工程师】 04.卷积神经网络 第三周目标检测 (1)基本的对象检测算法
    吴恩达【深度学习工程师】 04.卷积神经网络 第四周特殊应用(2)神经风格转换
  • 原文地址:https://www.cnblogs.com/nhdlb/p/13857744.html
Copyright © 2011-2022 走看看