性能测试工具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应用程序,选择监视