在上一篇已经讲到了jmeter性能监控插件的基本使用方法。但是每项的设置也是很重要的,如果不理解如何设置,在实际运用中可能会怀疑监控出来的数据。
监控指标参数设置
- CPU:
- 对于各指标项,数值都是代表百分比,比如默认配置(
combined
)下在曲线图中看到某个时间的数值是30,即代表此时总的cpu使用时间占比为30%。 - 有两点比较有用的地方值得说明:一是在Scope区域,可以通过Per Process选项来获取指定进程的CPU使用情况,二是在CPU Cores区域,我们可以选择监控指定的单个Core。
- Memory:
- 各指标项中,
usedperc
(默认)和freeperc
两项的数值代表与总内存的百分比,其余指标项的数值都是指内存大小,选中对应想,可以看到Metric Unit
区域单位配置将变为可用,通常Mb会比较适合观察。 - 同样,也可以选择监控指定进程的数据
- Disk I/O:
- 各指标项中,单位根据设置中的Metric Unit中的配置决定。
queue
(默认)的数值代表等待I/O队列长度,reads
、writes
分别代表每秒处理的读/写次数,readbytes
、writebytes
顾名思义,代表每秒读/写的数据量,单位同样在Metric Unit
区域配置,通常Mb会比较适合观察,因此结果图表中Y轴代表的是Mb/s。
- 如果有挂载多个存储设备,可以在
Filesystem Filter
区域指定要监控的设备。
剩下的几个指标(TCP,Swap等等)我也确实没用过,所以就不写了以防误导。
关于 metric parameters(参数指标)设置的详细说明,可以参考官网https://gerardnico.com/jmeter/serveragent,会有比较详细的primary metrics(主要指标)、additional metrics(额外指标)讲解。
[mark]特别说明:关于磁盘名称也需要根据具体使用什么类型的设备决定,比如:vd 开头 virtio-block 类型的设备,而 sd开头是 SCSI 类型的设备等等[/mark]
- 使用策略:
- 如果测试场景的测试执行时间较长,采集的监控数据量比较大,为了在GUI模式查看曲线图时更方便、快捷,建议将各个监控指标项单独使用一个PerfMon监听器,从而配置不同的指标项数据存储到不同的文件中,测试执行完毕后,载入数据和数据查看都会更快。
- 如果预计数据量不会太大,可以以服务器为单位来划分PerfMon监听器。这样可以方便的观察到整个测试过程中,某台服务器各项资源使用情况的变化趋势
- 对于分布式服务、为了方便观察各个节点的负载分布、负载变化趋势,可以考虑将同类型的节点放置到同一个PerfMon监听器,以便对比观察
- 数值:
- 当一个PerfMon监听器中展示多种指标项的数据时,为了曲线图的可观察性,插件会自动进行优化,我们看到在CPU项和内存项都有个x10,代表曲线图中展示的数值是在采集到的真实数值上放大了10倍,目的是为了保证不同数据项在同一坐标系中展示时,各项都变化趋势都能够被观察到。
- 曲线图配置:
- 插件界面的
Rows
标签页可以调整要在曲线图中展示的指标项 Setting
标签页中常用的有:
use relative times
用于配置曲线图x轴表示的是相对时间(测试开始时为0)还是实际系统时间。默认勾选,相对时间。Auto-zoom rows for best fit
默认勾选,则会有上一节讲数值时提到的展示数据自动放大的功能,取消勾选则全部展示采集的实际数值。Limit number of points in row to xx points
:勾选后可以设定曲线图展示的采样点数量,我们的测试报告会有不同的角色查看,其中一些角色可能不具备也不需要对监控数据的细节理解能力,此时我们提供的监控曲线图应该是易读的,如果按照实际的所有采样点来渲染出曲线图,可能会有很多偏离趋势的噪点数据,这对于不了解的人来说可能会有很多疑惑,所以当我们有了分析结论,最后报告呈现的时候,可以考虑通过调整采样点,来让曲线图更好的展示资源使用趋势,消除其他不必要的信息。Force maximum Y axis value to xx
,不勾选的情况下,插件在描绘曲线图的时候,会根据数值大小自动调整Y轴最大值,以达到更佳可读性
自定义指标
- EXEC
- 在插件界面选择指标类型时,可以看到一个
EXEC
选型,该选项允许我们在后面的Metric parameter中配置一个命令语句(该语句最终应该输出单个数值),测试执行时,ServerAgent将执行该命令,同时插件将接收ServerAgent捕获的输出数值。 - 语法规则:EXEC所配置的语句需要按照一定的规则来填写,先是给出命令的执行程序的位置,然后将具体的命令以及命令的参数作为,命令和命令参数都需要用冒号":"来隔开。比如
/bin/sh:-c:free |grep Mem |awk '{pring $7}'
/bin/sh
,代表命令的执行程序-c
,即/bin/sh
的-c
选型,有-c选型的情况下,将从后面的字符串按一定规则解析为命令和命令参数- 可以看到有用冒号分隔了执行程序/选型参数/命令语句
- 对于windows,也类似,如
C\:\Windows\System32\cmd.exe:/c:echo %RANDOM%
- TAIL
- 如同Linux的
tail
命令,读取文件的最后一行,用在这里,需要文件每一行只包含一个单独的数值。借助tail,我们可以通过自定义脚本监控任意指标,只需要脚本的输出满足要求即可。 - 显而易见,TAIL后面的参数就是配置要读取的文件的地址,测试执行时,ServerAgent将根据配置读取所在服务器的指定文件。
部分内容来源于网络。