使用jmeter进行压测的时候,一般情况下,我们采用的是nogui模式,执行完成之后,在listener里面打开保存的jtl文件进行图形绘制查看响应时间/tps的变化,基本不采用gui模式进行压测和实时绘图。那么在基于docker的jmeter弹性压测的时候,我们如何获取实时的服务器响应时间以此来指导是加压还是减压呢?

backendlistener

这是我们主要用到jmeter自带的listener里面的额backend listener。

我们先看下官网的介绍:

The backend listener is an Asynchronous listener that enables you to plug custom implementations of BackendListenerClient. By default, a Graphite implementation is provided.

简单翻译下:backend listener是一个异步的listener,可以支持任何实现了BackendListenerClient的自定义逻辑。默认,jmeter提供了一个机遇Graphite的实现。

在前文我们都是使用influxdb作为时序库,所以本文章依旧采用influxdb。

  • jmeter里新建测试用例
  • 新建thread group
  • 增加采样器之后,Add -> Listener -> Backend Listener,然后在implementation里面选择influxdb,填入的参数如下所示:
7b80a098589fd74e440eea677bb2fb2f.png

有几个关键点说明下:

influxdburl填入influxdb的地址,这里面写入的db是jmeter,所以我们实现需要首先创建这个数据库:create database jmeter;

application我们可以设置为本次压测的应用名称,比如123。

其余字段选择默认即可。

grafana设置

下面我们在grafana里面设置显示压测的响应时间:

  • 首先我们新建一个数据源,采用的数据库类型为influxdb,数据库为jmeter:
7dcc9a7e8288526738d97dff291473dd.png
  • 然后我们新建dashboard,add panel,增加的查询如下:
60afdafd19f36d028d1a057881872502.png

几个点如下:query后面我们选择的是刚刚创建的jmeter数据源;application为我们在jmeter中设置的123;filed选择的是pct95,即95%的响应时间,然后每10s进行聚合求平均值。如果需要把曲线变得平滑一些,可以将间隔进行适当放大,比如30s,此时我们就可以在grafana中查看到实时的响应时间变化曲线,依照此和上文所述的服务器性能监控,指导我们进行是继续加压还是减压。

更多推荐