一、背景
在做压力测试或者性能测试的时候, 服务端的各项资源指标是我们非常关心的问题。一般性能测试需要监控的指标分为资源指标和系统指标。
资源指标:
●CPU 使用率: 用户进程与系统进程消耗的CPU百分比, 一般长时间可以接受的上限不超过85%
●Memory 利用率: (1-空闲内存/总内存)*100%, 一般至少留有10%的可用内存, 长时间内存使用率上限可接受范围85%
●Disks I/O 用于磁盘存取数据: 用于读写操作所占用的时间百分比, 度量磁盘读写性能
●Network I/O 网络带宽: 表示为发送和接收字节的速率, 判断网络连接速度是否存在瓶颈
系统指标:
●并发用户数:某一时刻同时向系统提交请求的用户数
●在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
●平均响应时间:系统处理事务的响应时间的平均值。事务的响应时间是从客户端提交请求到服务器响应所消耗的时间.
●吞吐量:指在一次性能测试过程中网络上传输的数据量的总和
针对资源指标,我们可以通过命令例如"iostat、free、vmstat、sar"等命令去监控内存、CPU、磁盘IO等。
针对系统指标,我们可以在Jmeter中添加聚合报告来统计平均响应时间和QPS等信息。
但是这几种统计方式都无法观测到测试过程中的相关指标变化情况,于是问题就出现了,基于服务端日益增长的资源指标监测与测试工具基础功能不能满足需求的矛盾。基于此矛盾,我们通过导入Jmeter扩展的监听器来解决问题。
二、工具的添加
1、在Jmeter官网下载Plugins Manage插件,然后将jar包放置jmeter的lib/ext路径下,重启Jmter。可以看到Jmeter中添加了很多功能。
2、为了远程监控服务端机器的内存、CPU、磁盘IO需要在服务端启动一个ServerAgent服务,并且在Jmeter中配置正确端口进行监听。
下面简单介绍几种监测方法在测试中的应用。
三、在测试中的应用
为避免敏感信息,以下场景均使用本地环境代替服务端。
场景一:
在顺滑服务的性能测试过程中,QPS最终结果与开发预计不符,开发怀疑测试机器性能不稳定,于是给我们提出了一个需求,让我们提供一个不同时间段QPS的结果。通过“Hits per Second”就可以解决此需求问题。
场景二
在翻译服务的性能测试过程中,开发需要直观的观测不同并发数下翻译服务的QPS。通过“Transaction Throughput vs Threads”,可以看到不同并发数下每秒的请求次数。
场景三
在性能测试中,有时需要观察解码器的状态,此时就需要我们去监控解码器的内存、CPU、磁盘IO的使用情况。”通过PerfMon Metrics Collector“,并且在解码器启动一个ServerAgent来对解码器进行监控。
四、总结
本期为大家简单介绍了几种Jmeter的监听器,其他几种监听器可以根据实际测试的需求进行使用。通过使用多样化的监听器,可以帮助我们更好的分析测试系统的性能。