浅谈监听器之后端监听器

news2024/9/9 1:37:31

浅谈监听器之后端监听器

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

后端监听器的作用

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

配置与使用

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

最佳实践

● 性能考量:选择合适的后端存储和处理系统,确保它们能应对高并发数据写入,不影响测试数据的完整性。
● 资源监控:在进行大规模测试时,监控后端系统的资源使用情况,防止数据丢失或处理延迟。
● 测试计划同步:在分布式测试环境下,确保所有JMeter实例的后端监听器配置一致。
● 安全性:加密传输数据,特别是在公网上传输敏感信息时,确保数据的安全性。

应用实例

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

//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
第二步:查看当前数据库实例,找到自己要的实例

> show DATABASES
name: databases
name
----
_internal
prometheus
jmeter
losscount

第三步:进入数据库实例

> use jmeter
Using database jmeter

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

> SHOW MEASUREMENTS
name: measurements
name
----
events
jmeter

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1959214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python 可视化探索(二):高级图表与组合图表

总结&#xff1a;本文为和鲸python 可视化探索训练营资料整理而来&#xff0c;加入了自己的理解&#xff08;by GPT4o&#xff09; 原作者&#xff1a;作者&#xff1a;大话数据分析&#xff0c;知乎、公众号【大话数据分析】主理人&#xff0c;5年数据分析经验&#xff0c;前…

centos安装crictl

上章文章已经讲诉了如何安装centos安装containerd-CSDN博客&#xff0c;本文章讲解如何安装crictl 一、官网安装说明文档&#xff0c;官网 二、二进制安装 #!/bin/sh VERSION"v1.30.0" # check latest version in /releases page wget https://github.com/kubernet…

IDEA 本地有jar包依赖文件,但是所有引用的jar包全部爆红

前端时间 看源码&#xff0c;下载源码额按钮不见了&#xff0c;折腾了很久&#xff0c;遂打算重新安装idea&#xff0c;但是重新安装后&#xff0c;发现代码全都爆红&#xff0c;按照晚上说的删除idea 文件夹&#xff0c;idea缓存删除&#xff0c;都不好使&#xff0c;但是看到…

PMP冲刺题及知识点整理

PMP题目整理 冲刺题1错题整理冲刺题1相关重点记录&#xff1a;零散不熟悉知识点整理团队章程责任分配矩阵RAM定义是啥风险识别的工具都有啥 冲刺题2错题整理知识点整理情商风险登记在风险登记册&#xff0c;风险管理计划中没有风险团队章程项目经理来确保进行知识转移交付哪一个…

【C++】STL-红黑树封装出set和map

目录 1、实现红黑树的泛型 2、set和map的插入 3、set和map的迭代器 3.1 operator 3.2 operator-- 3.3 const迭代器 4、find 5、map的operator[] 6、完整代码 6.1 红黑树 6.2 set 6.3 map 1、实现红黑树的泛型 我们先引入上一节中写的红黑树 enum Colour {RED,BL…

Unity Shader 初学者指南

《Unity Shader 初学者指南》(3D Game Shaders For Beginners) 是一个面向初学者的教程项目&#xff0c;由David Lettier创建。该项目通过一系列分步指导&#xff0c;教授如何在3D游戏中实现各种着色技术&#xff0c;包括环境光遮蔽(SSAO)、景深(Depth of Field)、光照、法线贴…

产品经理-​简历内容的可准备点(24)

在互联网岗位中,产品经理是一个没有针对性的专业&#xff0c;知识结构不明确&#xff0c;那该具体准备哪些内容呢&#xff1f; 大家知道大公司实习含金量高&#xff0c;但作为纯产品“小白”&#xff0c;冷启动找实习很困难&#xff08;本科生不太好找产品实习&#xff0c;普通…

OSI七层模型详解

OSI七层模型 OSI&#xff08;Open System Interconnect&#xff09;&#xff0c;即开放式系统互连。 一般都叫OSI参考模型&#xff0c;是ISO组织在1985年研究的网络互连模型。该体系结构标准定义了网络互连的七层框架&#xff08;物理层、数据链路层、网络层、传输层、会话层、…

loguru日志模块:简化Python自动化测试的日志管理!

引言 日志是软件开发中的关键组成部分&#xff0c;为开发和测试人员提供了调试和监控应用程序的重要手段。loguru 是一个第三方的 Python 日志库&#xff0c;以其简洁的 API 和自动化的功能脱颖而出。本文将探讨为什么项目中需要日志&#xff0c;loguru 为何受到青睐&#xff…

Python | ValueError: not enough values to unpack 解析

Python | ValueError: not enough values to unpack 解析 在Python编程中&#xff0c;ValueError: not enough values to unpack是一个常见的错误&#xff0c;通常发生在尝试将一个可迭代对象解包到太多的变量中时。本文将深入探讨此错误的根源&#xff0c;提供解决思路、方法…

Vue 中使用 inMap 创建动态遮罩覆盖物

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue 中使用 inMap 创建动态遮罩覆盖物 应用场景 在基于 Vue 构建的地理信息系统应用中&#xff0c;经常需要在底图上绘制动态的遮罩覆盖物&#xff0c;以突出显示特定区域或隐藏敏感信息。 基本功能 这段代…

瑞芯微平台RK3568系统开发(2)Camera 开发2

基于上文&#xff0c;继续 瑞芯微平台RK3568系统开发&#xff08;2&#xff09;Camera 开发1-CSDN博客 1、使用v4l2-ctl说明 media-ctl工具的操作是通过/dev/medio0等media设备&#xff0c;它所管理是media的拓扑结构中各个节点的format&#xff0c;大小&#xff0c;链接。 …

CTF学习笔记汇总(非常详细)零基础入门到精通,收藏这一篇就够了

CTF学习笔记汇总 Part.01 Web 01 SSRF 主要攻击方式如下&#xff1a; 01 对外网、服务器所在内网、本地进行端口扫描&#xff0c;获取一些服务的banner信息。 02 攻击运行在内网或本地的应用程序。 03 对内网Web应用进行指纹识别&#xff0c;识别企业内部的资产信息。 …

Studying-代码随想录训练营day45| 115.不同的子序列、583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇

第45天&#xff0c;子序列part03&#xff0c;编辑距离&#x1f4aa;(ง •_•)ง&#xff0c;编程语言&#xff1a;C 目录 115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇 115.不同的子序列 文档讲解&#xff1a;代码随想录不同的子序列 视频讲…

高效能程序员的9个习惯

最近看了一本关于敏捷软件开发实践的指南&#xff0c;他文中主要是在帮助软件开发者和团队提升工作效率、提高产品质量&#xff0c;并建立良好的工作文化和协作模式。以下是根据目录整理出的一段总结&#xff1a; 书名&#xff1a;《敏捷之道》 本书深入探讨了敏捷开发的核心原…

从 1 到 100 万+连接数,DigitalOcean 负载均衡的架构演进

在前不久&#xff0c;DigitalOcean 全球负载均衡器&#xff08;GLB&#xff09;Beta版正式上线。该解决方案能给客户的跨区域业务带来更好的支持&#xff0c;可以增强应用程序的弹性&#xff0c;消除单点故障&#xff0c;并大幅降低终端用户的延迟。这是 DigitalOcean 负载均衡…

Python写UI自动化--playwright(pytest.ini配置)

在 pytest.ini 文件中配置 playwright 的选项可以更好地控制测试执行的过程。 在终端输入pytest --help&#xff0c;可以找到playwright的配置参数 目录 1. --browser{chromium,firefox,webkit} 2. --headed 3. --browser-channelBROWSER_CHANNEL 4. --slowmoSLOWMO 5. …

魔众文库-PHP文库管理系统

魔众文库是一套基于PHPMYSQL开发的适用于多平台的文档管理系统&#xff0c;提供doc、ppt、excel、pdf、压缩包、图片、CAD 等资源的在线预览和下载&#xff0c;文件被转换为H5或图片格式&#xff0c;文字放大无失真&#xff0c;响应速度更快速对SEO更友好&#xff0c;收录更快、…

NFTScan | 07.22~07.28 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2024.07.22~ 2024.07.28 NFT Hot News 01/ 数据&#xff1a;NFT 系列 Liberty Cats 地板价突破 70000 MATIC 7 月 22 日&#xff0c;据 Magic Eden 数据&#xff0c;NFT 系列 Liberty C…

内网隧道学习笔记

1.基础&#xff1a; 一、端口转发和端口映射 1.端口转发是把一个端口的流量转发到另一个端口 2.端口映射是把一个端口映射到另一个端口上 二、http代理和socks代理 1.http带那里用http协议、主要工作在应用层&#xff0c;主要用来代理浏览网页。 2.socks代理用的是socks协议、…