性能测试工具Jmeter实战


1.执行原理

  JMerer通过线程组来驱动多个(也可以理解为LR?具??的虚拟?户)运?测试脚本对?标服务器发起?量的?络请 求,

  在每个客户端上可以运?多个线程组,也就是说?个测试计划??可以包含N个线程组。

2.JMeter线程组详解

 2.1取样器错误后要执行的动作

  • 继续

    如果有?个请求错误,其他的请求会继续,不会因为有?个请求错误的导致其他请求终?。
  • 启动下一个进程循环

    如果请求出现问题,同?脚本中的其他请求就都不再执?,直接执?下?个进程的信息。如登录后下?个请求是查
    看个?主?,但是因为登录出错,下个接?查看个?主?就不会被执?。
  • 停止线程

    停?线程指的是如果请求失败,就停?当前线程执?,不再继续执?。如果线程数很多的,那么导致的结果是停?
    的线程就会很多,处于真正运?的线程会很少,最后导致服务器的负载不够,?般不建议构选改选项。
  • 停止测试

    如果请求失败,那么停?所有线程执?,也就是说停?整个测试。
  • 立即停止测试

    如果请求失败,?即停?整个测试场景的执?。

2.2线程属性

  • 线程数

    ?个线程可以理解为对应模拟?个?户,所以线程数越多,那么也就认为可以模拟的?户数越多。
  • Ramp-Up时间(秒)

    该属性指的是所有线程从启动到开始运?的时间间隔,单位是秒,也就是说所有线程在多?时间内开始执?,如线
    程数设置50,设置的时间为5秒,那么计算的公式为:
    每秒执?线程数=线程数/Ramp-Up
    具体如:
            如设置的线程数为50,Ramp-up的时间为10,那么也就是说开启执?后,每秒会启动5个线程,如果Ramp-Up设置为
            0,那么开始执?后,50个线程会?刻启动。
  • 循环次数

    循环次数可以理解为,请求的重复次数。如果选择“永远”,那么请求将?直进?,不建议这样操作。
  • 延迟创建线程直到需要

    如50个线程数,Ramp-Up时间是10秒,执?后线程是全部就绪的,那么就是每隔1秒启动5个线程数
  • 调度器

    所谓调度器可以理解为设置何时开始运?。
  • 持续时间

    测试计划持续多?时间
  • 启动延迟

    从当前时间延迟多?时间开始运?测试,也就是说点击执?后,仅仅是做初始化的场景,不会执?测试,等待延迟
    到达后开始运?测试,执?的时间为持续时间设置的时间。

2.3JMeter监听器

  • 聚合报告

    聚合报告是以表格的形式来显示取样器的结果信息,如果不同的取样器拥有相同的名字,那么在聚合报告会显示在
    ????,那么?般来说,聚合报告都是根据取样器来显示每个取样器的执?结果信息。聚合报告的信息具体如下

    Label:取样器名称
    Samples:取样器运?次数
    Average:单个请求的平均响应时间
    Median:50%请求的响应时间
    90%Line:90%请求响应时间
    95%Line:95%请求响应时间
    99%Line:99%请求的响应时间
    Min:请求的最?响应时间
    Max:请求的最?响应时间
    Std.Dev:响应时间的标准?差
    Error%:事务错误率
    Throughput:吞吐率,也就是TPS
    KB/sec:每秒数据包流量
    Avg.Bytes:平均数据流量
    Received KB/sec:每秒从服务器端接收到的数据量
    SentKB/sec:每秒从客户端发送的请求的数量
  • 响应时间

    响应时间趋势图反馈的是请求的时间趋势图

3.服务器资源监控

  文章演示为Windows 10系统

  3.1.服务端部署Server Agent

    将Server Agent文件解压之后放在需要监控的服务器上,控制台进到该目录,打开文件(Windows打开startAgent.bat,Mac&Linux系统打开startAgent.sh)

    控制台输出以下内容表示部署成功

INFO    2022-02-16 19:35:15.116 [kg.apc.p] (): Binding UDP to 4444
INFO    2022-02-16 19:35:16.123 [kg.apc.p] (): Binding TCP to 4444
INFO    2022-02-16 19:35:16.124 [kg.apc.p] (): JP@GC Agent v2.2.0 started

    Server Agent默认的端口是4444,如需更改端口可在运行脚本的时候添加--tcp-port xxx来指定端口

    如startAgent.bat --tcp-port 1234,需要注意的是此时JMeterPerfMon插件使用时也需要对绑定端口进行对应修改。

   3.2.JMeter中PerfMon插件使用

    3.2.1插件的安装

      安装插件的jar包之前分享过,这里就不重复了,传送门:

     3.2.2PerfMon插件的配置

  3.3.3监视器指标项

    • CPU

      对于各指标项,数值都是代表百分比,比如默认配置(combined)下在曲线图中看到某个时间的数值是30,即代表此时总的cpu使用时间占比为30%。
      有两点比较有用的地方值得说明:一是在Scope区域,可以通过Per Process选项来获取指定进程的CPU使用情况,二是在CPU Cores区域,我们可以选择监控指定的单个Core。
    • Memory

      各指标项中,usedperc(默认)和freeperc两项的数值代表与总内存的百分比,其余指标项的数值都是指内存大小,选中对应想,可以看到Metric Unit区域单位配置将变为可用,通常Mb会比较适合观察。
      同样,也可以选择监控指定进程的数据
    • Disk I/O

      各指标项中,queue(默认)的数值代表等待I/O队列长度,reads、writes分别代表每秒处理的读/写次数,readbytes、writebytes顾名思义,代表每秒读/写的数据量,单位同样在Metric Unit区域配置,通常Mb会比较适合观察。
      如果有挂载多个存储设备,可以在Filesystem Filter区域指定要监控的设备。

 4.后端监听器

  • 实现原理

  • 后端监听器的配置

  • 查看监听结果

5.JVM的监控

   JVM是监控Java应用程序消耗CPU与内存资源的情况

  • 查看Java应用程序进程

    C:\Users\特昂糖>jps
    25584 Jps
    26480 ApacheJMeter.jar
    22040
  •  JVM的使用

    在JDK的bin目录下找到jvisualvm.exe的应用程序,以管理员身份运行

     双击该Java应用程序,选择监视