浅谈监听器之后端监听器

浅谈监听器之后端监听器

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

相关推荐
CesareCheung1 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流1 天前
jmeter使用技巧
jmeter
春时似衿里1 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书1 天前
JMeter的安装部署
jmeter
程序员杰哥1 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
乐神嘎嘎嘎2 天前
Jmeter测试
jmeter
卓码软件测评2 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
BatyTao2 天前
Jmeter执行数据库操作
数据库·jmeter
二宝哥2 天前
性能测试工具Jmeter之java.net.BindException: Address already in use
jmeter