• Jmeter性能测试之阶梯式场景(负载测试)、波浪式场景(压力测试)


    一、阶梯式场景(负载测试)

      该场景主要应用在负载测试里面,通过设定一定的并发线程数,给定加压规则,遵循“缓起步,快结束”的原则,不断地增加并发用户来找到系统的性能瓶颈,进而有针对性的进行各方面的系统优化。

      使用到的线程为:jp@gc - Stepping Thread Group (deprecated)

      在测试计划上:右键—>添加—>线程(用户)—>jp@gc - Stepping Thread Group (deprecated)

       同时添加以下监视器:

    • TPS:jp@gc - Transactions per Second
    • 响应时间:jp@gc - Response Times Over Time
    • 活跃线程数:jp@gc - Active Threads Over Time

    针对阶梯式场景的参数配置,说明如下:

    • This group will start:给定的当前负载的并发用户数
    • First, wait for:等待XX秒后开始启动
    • Then start:0秒(初始化)启动XX并发用户数 — 在第几个虚拟用户启动
    • Next, add:每using ramp-up时间内启动XX的用户数
    • threads every:每次加压阶梯下用户完成启动后保持运行XX秒
    • using ramp-up:XX秒内完成Next, add的用户数的启动

        

          注:五秒钟启动十个线程,这十个线程持续运行30秒,再用五秒钟启动十个线程,这20个线程持续运行30秒

    • Then hold load for:This group will start并发用户数全部启动完成后保持运行XX秒 == 所有线程运行完成后再执行XX秒
    • Finally, stop:每隔threads every的时间减少XX用户数
    • threads every:每隔XX秒减少Finally, stop的用户数

      

           注:每隔1秒减少5个并发用户数直到并发用户数减少为0

    我们以注册接口为例,配置如下参数:

      配置参数的完整描述为:给定负载并发用户数为25,从0秒开始,每3秒内增加5个并发用户数,3秒时刻完成5个并发用户数的启动后开始平稳运行10秒钟,依次下去,直到25个并发用户数全部都启动完成后,平稳运行30秒,然后每隔1秒减少5个并发用户数直到并发用户数减少为0时,负载测试结束。

    开始进行负载测试,等待测试完成后,可以通过添加的jpgc监视器图表查看性能测试报告结果

     

     

    二、波浪式场景(压力测试)

      该场景主要用在分段时间压测和压力测试里面,分段时间压测比如点餐系统,一天会出现用餐高峰期、平稳期和闲时区,针对该场景我们就要设计成不同时间段的压力值不同,加压方式不同等等,压力测试我们只需要使用一个场景,并将压测时间设置长即可,同样的测试报告也用jpgc的监视器获得

      使用到的线程为:jp@gc - UItimate Thread Group

      在测试计划上:右键—>添加—>线程(用户)—>jp@gc - UItimate Thread Group

    针对波浪式场景的参数配置,说明如下:

    • Start Threads Count:给定当前时间段的并发用户数
    • Initial Delay, sec:初始化时间,单位:秒(s)
    • Startup Time, sec:启动时间,单位:秒(s)
    • Hold Load For, sec:所有并发用户数启动完成后保持运行的时长,单位:秒(s)
    • Shutdown Time:结束时间,单位:秒(s)

    分段时间压测(示例):

      理解:从 0秒 开始,30秒 启动 50个 虚拟用户,运行 60秒 后,10秒 停止50个虚拟用户  == 第一阶段耗时100秒

         从100秒 开始,15秒 启动 200个 虚拟用户,运行 120秒 后,10秒 停止 200个 虚拟用户 == 前两个阶段总耗时 245 秒

         从 245秒 开始,30秒 启动 50个 虚拟用户,运行 60秒 后,20秒 停止 100个 虚拟用户  == 前三个阶段总耗时 385秒

        。。。。。。

    压力测试(示例):

      理解:从 0秒 开始,60秒 启动 300个 虚拟用户,运行 500秒 后,10秒 停止300个虚拟用户  == 段耗时 570秒

    本文仅供参考;如果这篇文件对你有所帮助,麻烦动动发财的小手,推荐一波支持下万分感谢 *******请大家尊重原创,如要转载,请注明出处:作者:守护@往昔;转载自:https://www.cnblogs.com/shouhu/,谢谢!!*******

    三、服务器监控

      服务器监控插件:jp@gc - PerfMon Metrics Collector,需要在服务器安装:ServerAgent

      • 服务器资源监控线形图
      • 用于监控机器的CPU、Memory、swap、Disks I/O、Networks I/O。CPU:cpu占用量百分比;
      • 服务器性能监测控件,包括CPU,Memory,Network,I/O等等(此功能用到在需监听的服务器上启动startAgent)
      • 根据需要选择CPU,Memory,Network I/O等

    1、下载并安装ServerAgent

    百度网盘链接安装包:

    2、通过ftp/sftp方式把包上传到服务器上,解压

    1. 上传 压缩包到服务器 建议公司环境安装目录下或opt目录下
    2. 解压命令:unzpi ServerAgent-2.2.3.zip
    3. 进入解压后的文件:cd ServerAgent-2.2.3/
    4. 查看所有文件:ll
      • starAgent.sh 是启动文件

    3、更改端口并启动服务:

    Linux 下启动:.startAgent.sh  回车就可以启动,默认的端口是4444

    在阿里云的服务器上面4444端口可能冲突后会被禁用,防止禁用后会出现各种问题

    更改并启动服务执行: sh startagent.sh --udp-port 0 - -tcp-port 3231

    (建议使用该方式,去掉udp、tcp改变端口, 默认4444,可能冲突或禁用)

    • udp和tcp都是http协议中使用的数据传输协议 其中 udp 的意思是传输的速度越快越好,不保证数据的准确定
    • tcp 需要先建立双方的链接,数据稳定不会出错,传输的速度没有udp快

    加上&后台运行:sh startagent.sh --udp-port 0 -tcp-port 3231&

    停止服务:Ctrl + C

    4、启动服务后去检查防火墙是否关闭

    1、服务器防火墙是关闭状态那就没有问题

    • 1、启动防火墙:systemctl start firewalld
    • 2、关闭防火墙:systemctl stop firewalld
    • 3、检查防火墙状态:systemctl status firewalld 

      

    2、如果没有关闭防火墙,那么就需要关闭或执行下面的命令把端口添加到防火墙内

    • 防火墙添加开放端口:
    • 命令:firewall-cmd --permanent -add-port=3123/tcp
      • 不用在意此条内容:再firewall-cmd --reload  (删除firewall-cmd-permanent --remove-port=3243/tep)  

    安装完毕

    5、运行脚本:

     启动后会出现如下图:服务器资源监控的图表

    可能出现的问题:

    1.启动文件,并指定端口号(随意):

    • ./ startAgent.sh --udp-port 0 --tcp-port 3128
    • 意思是:不启用 udp 服务,只启动 tcp 服务

    2.可能出现网络不通

    检测到服务器 端口网络不通

    telnet 服务器地址.3129

    1、网络不通第一种解决办法

    先停止服务:Ctrl + C

    检查3128端口:lsof -1:3128

    输入命令回车后什么都没有提示

    需要查看防火墙:systemctl status fi rewalld

    2、网络不通第二种方法

    • 关闭防火墙,重新指定端口
      • systemctl stop firewalld
      • systemctl status firewalld
      • ./ startAgent.sh - -udp-port 0 --tcp-port 3129

    检测端口网络是否通畅

    telnet 148. 70. 249.98 3129

  • 相关阅读:
    Day22:异常处理、socke基于TCP协议编程
    Day21:面向对象的软件开发、反射、对象的内置方法
    Day20:绑定方法与非绑定办法、多态和多态性
    Day19:继承实现的原理、子类中调用父类的方法、封装
    Day18:类的抽象、类的组合应用
    Day17:类的继承、派生、组合和接口
    Day16:面向对象编程——类和对象
    数据结构
    python爬虫篇之 性能相关
    scrapy-redis
  • 原文地址:https://www.cnblogs.com/xiaocaicai-cc/p/14780519.html
Copyright © 2020-2023  润新知