zoukankan      html  css  js  c++  java
  • 性能测试之Jmeter中场景设置与启动方式

    Jmeter场景设置与启动方式

    性能测试场景是用来模拟模拟真实用户操作的工作单元,所以场景设计一定要切合用户的操作逻辑,jmeter主要是通过线程组配合其他组件来一起完成场景的设置。

    线程组设置

    Jmeter线程组实际上是简历一个线程池,然后根据用户的设置完成线程池的初始化,在运行时做各种逻辑处理

    image-20200705103021949

    上图是一个线程组的配置界面,下面我们对具体的参数进行说明

    name和comments

    是名称和注释的配置,这里根据自己要测试的场景设置就好,最好是见名知意

    Action to be taken after a sampler error

    在取样器错误后要执行的操作,也就是说在某一个请求出错后的异常处理方式,有5中方式

    • Continue, 继续,取样器模拟的请求出错后,继续运行

      在大量用户并发请求时,服务器可能会出现错误响应,这属于正常现象,此时要把错误记录下来,继续后面的请求

    • start next Thread Loop 如果出错,则统一脚本中的剩下的请求将不在执行,直接重新开始,比如有个场景,需要先登录后发文,这个时候如果登录失败了,那么发帖就不会成功,所以没必要继续执行,直接开始下一轮测试就好,此时就可以设置这个错误处理方式。

    • stop thread 停止线程,如果遇到取样器模拟的某个请求失败,则停止当前线程,不再执行,比如配置了40个线程,某个线程的请求失败,则停止当前线程,剩余的线程继续执行,如果失败的越多,则停止的越多,运行状态的线程就会越来越少,那服务器的负载就会不够,测试结果也不具备参考性了,所一般不设置这个。

    • stop test 停止测试,如果某一个线程的一个请求失败了,则停止掉所有线程,也就是说测试要停止,但是每个线程任然会执行完当前场景,比如当前场景为登陆发文,有个线程登陆失败,其他线程也执行到了登陆,错误发生后,其他线程还是会继续执行发文操作。

    • stop test Now 立即停止测试,如果有线程请求失败,则立即停止所有线程,不再继续执行

    Thread Properties 线程属性设置
    • 线程数 Number of Threads(users)

      运行的线程数设置,一个线程对应一个用户

    • Ramp-up period(seconds)线程启动开始运行的时间间隔,单位是秒,所有线程在多长时间内开始运行

      比如说设置了50个线程,Ramp-up period设置10秒,那么每秒就会启动5个线程,如果设置0秒,那么50线程就会立即启动。

    • Loop count 请求的重复次数,如果选择infinite,那么请求将会一直执行下去,除非停止或者崩溃,如果选择填入具体次数,那就可以控制循序的次数了。

    • sam user on each iteration 每次迭代有使用相同的用户,这个配置是5.2版本以后新加的,之前的版本没有这个选项,所以会有一个问题,模拟的用户并不是和真实场景一样是相互独立的,他默认在每个线程中是复用用户,给大家推荐一篇文章https://www.cnblogs.com/nmb123/p/12266697.html

    • Delay Thread creation until needed

      JMeter 所有的线程是一开始就创建完成的,只是递增的时候会按照上面的规则递增。如果选择了这个选项,则不会在一开始创建所有线程,只有在需要时才会创建。

      如果不选择,在启动场景时,JMeter 会用更多的 CPU 来创建线程,它会影响前面的一些请求的响应时间,因为压力机的 CPU 在做其他事情嘛。如果选择了的话,就会在使用时再创建,CPU 消耗会平均一些,但是这时会有另一个隐患,就是会稍微影响正在跑的线程

    • Specify Thread lifetime 线程运行时间,这个配置只有Loop count 请求的重复次数,配置了infinite,才会生效,否则还是Loop count 控制线程的执行

      • Duration(seconds)设置线程组运行多长时间,单位是秒
      • StartUp delay(seconds)设置线程启动延时时间,单位是秒

    场景运行

    Jmeter的运行方式分为两种,一种是GUI可视化界面运行,另一种是命令行运行,这两种都支持本地化运行即单体运行和远程运行。这里我们主要介绍远程执行和jmeter命令行运行。

    远程运行配置
    • 远程配置

      远程运行节点端口配置:

      server_port=1099
      server.rmi.localport=1099
      

      运行:

      ./jmeter-server -Djava.rmi.server.hostname=本机ip
      
    • 本地配置

      remote_hosts配置

      remote_hosts=ip:port,ip:prot,... ip和port都是远程执行机的ip和server的运行端口
      

      运行:

      java -jar ApacheJMeter.jar -n -t Thread Group.jmx -r -l result.jtl -R ip
      

      -R 指定要哪台机器运行测试脚本

    命令行

    image-20200705182307472

    命令行执行./jmeter -?可以输出命令行参数选项,这里只介绍一些比较常用的,更多用法看官方文档

    • -l 记录测试结果到文件,指定文件地址和名称,可以使相对路径也可以是绝对路径
    • -d 指定jmeter home路径
    • -R 开启远程负载机,指定负载机的ip
    • -n 指定非GUI方式运行
    • -t 指定jmeter脚本文件路径
    • -L 指定日志级别

    欢迎大家去 我的博客 瞅瞅,里面有更多关于测试实战的内容哦!!

  • 相关阅读:
    关于int8_t,uint8_t.....等数据类型的理解
    导出函数__declspec(dllexport)
    c++中的namespace
    GitHub C 和 C++ 开源库的清单(含示例代码)
    进制之间的转换一
    为 JSON 字符串创建对象
    HTML5 简单Demo1
    主要浏览器的调试工具
    fiddler2抓包工具使用图文教程
    JAVA将秒的总和转换成时分秒的格式
  • 原文地址:https://www.cnblogs.com/zyjimmortalp/p/13248386.html
Copyright © 2011-2022 走看看