浅谈监听器之后端监听器

浅谈监听器之后端监听器

"后端监听器"(Backend Listener)是一种高级功能,用于异步地将测试结果数据发送至外部系统,如数据库、消息队列或时间序列数据库等,以便于长期存储、实时分析和可视化展示。

后端监听器的作用

  1. 数据异步传输:与标准监听器不同,后端监听器采用异步方式收集测试结果,减少了测试执行过程中的延迟,提高了测试效率。
  2. 扩展数据处理能力:通过将数据推送至后端系统,可以利用更强大的数据处理能力进行实时分析和长期存储。
  3. 集成与分析:便于与大数据分析平台、监控系统(如Grafana、Kibana)集成,实现测试结果的实时监控和报警。
  4. 分布式测试支持:在分布式测试环境中,后端监听器能有效收集所有节点的数据,集中管理测试结果。

配置与使用

  1. 添加后端监听器:在JMeter的测试计划中,右键点击"线程组"或"测试计划",选择"添加" -> "监听器" -> "后端监听器"。
  2. 选择后端客户端:后端监听器需要一个实现BackendListenerClient接口的客户端来处理数据发送逻辑。常见的客户端有InfluxDB、Graphite、Elasticsearch等,根据需求选择合适的客户端并安装相应的插件。
  3. 配置参数:
    ○ 名称:为监听器命名,便于识别。
    ○ 后端监听器实现:选择具体的后端客户端实现。
  4. 日志与错误处理:确保配置正确的日志级别,以便于调试和问题追踪。后端监听器应能妥善处理网络故障、连接超时等问题,避免影响测试的正常运行。

最佳实践

● 性能考量:选择合适的后端存储和处理系统,确保它们能应对高并发数据写入,不影响测试数据的完整性。

● 资源监控:在进行大规模测试时,监控后端系统的资源使用情况,防止数据丢失或处理延迟。

● 测试计划同步:在分布式测试环境下,确保所有JMeter实例的后端监听器配置一致。

● 安全性:加密传输数据,特别是在公网上传输敏感信息时,确保数据的安全性。

应用实例

首先我们使用SpringBoot框架编写一段测试代码接口

java 复制代码
//html
@GetMapping(value = "/html",produces = "application/html")
    public String Returnhtml() {
        return "<!DOCTYPE html>\n" +
                "<html lang=\"en\">\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\">\n" +
                "    <title>简单表单提交界面</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "    <h1>欢迎来到我们的简易表单</h1>\n" +
                "    <form action=\"/submit_form\" method=\"post\">\n" +
                "        <label for=\"name\">姓名:</label>\n" +
                "        <input type=\"text\" id=\"name\" name=\"name\"><br><br>\n" +
                "        <label for=\"email\">电子邮件:</label>\n" +
                "        <input type=\"email\" id=\"email\" name=\"email\"><br><br>\n" +
                "        <label for=\"message\">消息:</label>\n" +
                "        <textarea id=\"message\" name=\"message\"></textarea><br><br>\n" +
                "        <input type=\"submit\" value=\"提交\">\n" +
                "    </form>\n" +
                "</body>\n" +
                "</html>";
    }

我们编写如下脚本:

线程组:保持默认

HTTP信息头管理器:名称设置为accept,值为application/html

HTTP请求:协议设置为http,服务器名称或IP设置为127.0.0.1,端口设置为8091,方法设置为GET,路径设置为/html,内容编码为utf-8

这里要着重说明下,我们使用的JMeter是5.1.1作为测试版本,所以我们配套的influxdb数据库为InfluxDB shell version: 1.8.4

后端监听器:

● 后端监听器:选择influxdb

● influxdbMetricsSender:设置org.apache.jmeter.visualizers.backend.influxdb.HttpMetricsSender

● influxdbUrl:选择http://XX.XXX.XXX.XXX:8086/write?db=jmeter,上述db为数据库名称

● application:设置为test

● measurement:设置为jmeter,这里可以理解为jmeter写入的influxdb表

● summaryOnly:根据实际情况填写,当前保持默认

● samplersRegex:保持默认

● percentiles:保持默认

● testTitle:根据实际情况设置,保持默认为Test name

● eventTags:根据实际情况设置,当前保持默认

运行脚本后,我们登录对应的服务器上查看influxdb上是否真的写入数据库

第一步:登录influxdb

[root@localhost ~]# influx

Connected to http://localhost:8086 version 1.8.4

InfluxDB shell version: 1.8.4

第二步:查看当前数据库实例,找到自己要的实例

linux 复制代码
> show DATABASES
name: databases
name
----
_internal
prometheus
jmeter
losscount

第三步:进入数据库实例

linux 复制代码
> use jmeter
Using database jmeter

第四步:查看当前实例下的数据库表

linux 复制代码
> SHOW MEASUREMENTS
name: measurements
name
----
events
jmeter

第五步:查看表下的数据内容

linux 复制代码
> select * from jmeter order by time desc limit 5
name: jmeter
time                application  avg  count countError endedT hit max  maxAT meanAT min  minAT pct90.0 pct95.0 pct99.0 rb  responseCode responseMessage sb  startedT statut transaction
----                -----------  ---  ----- ---------- ------ --- ---  ----- ------ ---  ----- ------- ------- ------- --  ------------ --------------- --  -------- ------ -----------
1721801588352000000 test         1022 1     0                 1   1022              1022       1022    1022    1022    782                              154          all    all
1721801588352000000 test                               1               1     1           1                                                                  1               internal
1721801586885000000 test                               1               0     0           0                                                                  1               internal

总结

JMeter的后端监听器为性能测试提供了强大的数据收集和分析能力,是进行大规模、复杂测试不可或缺的工具。通过合理的配置和使用,可以有效地管理和优化应用的性能测试流程,为软件的性能优化和监控提供坚实的基础。

相关推荐
綦枫Maple6 小时前
Jmeter基础篇(22)服务器性能监测工具Nmon的使用
运维·服务器·jmeter·性能监控·nmon
古人诚不我欺7 小时前
jmeter常用配置元件介绍总结之线程组
java·开发语言·jmeter
惜.己7 小时前
Jmeter中的监听器(一)
测试工具·jmeter·1024程序员节
我非夏日1 天前
JMeter进阶篇
jmeter
惜.己1 天前
Jmeter中的配置原件(三)
功能测试·测试工具·jmeter·1024程序员节
綦枫Maple1 天前
Jmeter基础篇(23)TPS和QPS的异同
数据库·jmeter·oracle
惜.己1 天前
Jmeter中的配置原件(二)
测试工具·jmeter·1024程序员节
我非夏日1 天前
JMeter项目实战
jmeter
川石课堂软件测试1 天前
性能测试|JMeter接口与性能测试项目
javascript·数据库·python·jmeter·单元测试
古人诚不我欺1 天前
jmeter常用配置元件介绍总结之后置处理器
人工智能·jmeter·tensorflow