MeterSphere在开源压测工具JMeter上的分布式优化和实践

Apache JMeter是一款100%纯Java的开源软件,旨在加载测试功能行为和测量性能。它可以用来测试静态和动态资源的性能,例如静态文件、Java Servlet、CGI Scripts、Java Object、数据库和FTP服务器等。JMeter可以用于模拟大量负载来测试一台服务器、网络或者对象的健壮性或者分析不同负载下的整体性能。相比于其他的性能测试软件,JMeter具备以下优势:

■ 开源:JMeter是一款开源的免费软件,支持多种协议的接口和性能测试;

■ 轻量级:JMeter的软件包小巧轻量,只需要在JDK环境下就可以运行,无需其他额外的部署安装(单机版);

■ 功能强大:JMeter设计之初只是一个简单的Web性能测试工具,但经过不断地更新扩展,现在可以完成数据库、FTP、LDAP、WebService等方面的测试。基于JMeter自身的开源性,用户可以根据自己的需求扩展其功能。

JMeter分布式性能压测方案的局限性

近几年,随着互联网+、在线电商等在线化业务的发展,性能测试也逐渐成为企业高频测试的类型之一。JMeter作为运用最为广泛的开源性能压测工具,已经被很多企业运用至实际的环境中。

但是JMeter的单机版本在一般的压力机配置下,因为受限于JMeter其本身的机制和硬件配置,最多可以支持几百至一千左右的模拟请求线程。规模再次扩充后,容易造成卡顿、无响应等情况。有时候,企业为了尽量模拟业务场景,需要模拟大量的并发请求,这时JMeter单台压力机就显得有心无力。

针对这个情况,JMeter的解决方案是支持分布式性能压测,即将大量的模拟并发分配给多台压力机,来满足这种大流量的并发请求场景。JMeter原生的分布式性能压测方案原理如下:

在这里插入图片描述

  1. 在分布式测试中,选择一台机器作为主控机(Controller),其他的机器作为测试执行的从机(Agent);

  2. 执行测试时,由Controller通过命令行将测试脚本发给Agent,然后由Agent执行测试,同时将测试结果发送给Controller;

  3. 测试完成后,可以在Controller上的监听器中看到Agent发来的测试结果,结果为多个Agent的测试结果汇总而成。

不过,JMeter原生的主从方案虽能够支持大并发的压测需求,但是其方案也存在一定的局限性,具体表现在以下几个方面:

  1. JMeter主从方案部署繁琐。除了为了确保Controller和Agent机器在同一个子网内,还需要保证JMeter版本、Java版本、插件版本的一致性;

  2. 如果JMeter压测需要用到CSV或者额外的JAR包等,需要在每台Agent上复制一份,并且保证所有的路径配置一致;

  3. 如果JMeter压测的CSV需要每台Agent压测机读取的数据不一样,则需要人为提前进行切分、裁剪和放置;

  4. JMeter压测时依赖的JAR包、JMX文件、压测报告等,都是在本地保存和管理的,无法统一管理和留存,管理上会造成不便和混乱;

  5. JMeter压测时通过插件可以覆盖基础的CPU、内存等监控,但是无法覆盖应用级别的监控,例如MySQL连接数、JVM使用等,无法支持用户自定义监控。

MeterSphere基于JMeter分布式性能压测的优化

鉴于JMeter分布式性能压测方案存在上述短板,MeterSphere开源持续测试平台从技术和管理两个维度对JMeter的性能压测进行了优化,同时保证了对JMeter使用上的兼容性。与此同时,MeterSphere还支持调用Kubernetes环境和云环境进行压测,轻松支持高并发、大规模的性能测试。MeterSphere性能测试概览仪表盘如下图所示:

在这里插入图片描述

MeterSphere分布式性能测试方案与涉及的组件如下(注:组件介绍参考MeterSphere官网链接:https://metersphere.io/docs/system_arch/):

■ Node Controller:为性能测试提供独立节点类型的测试资源池, 接收来自系统的性能测试任务, 动态地启动JMeter容器完成性能测试;

■ MySQL:MeterSphere项目的主要数据均存储在MySQL数据库;

■ Kafka:接收JMeter产生的性能测试结果数据;

■ Data Streaming:从Kafka中获取性能测试结果数据,处理后存入MySQL数据库;

■ Docker Engine:为Node Controller提供JMeter容器运行环境。

MeterSphere分布式性能压测方案的方案架构图如下图所示。

在这里插入图片描述

  1. 用户在MeterSphere界面设置性能压测参数(并发、时间、梯度、压测资源池、文件切分等);

  2. MeterSphere根据用户设置的压测配置参数,自动化选择资源池,分发压测脚本和文件,自动启动JMeter压测节点(通过Docker启动)进行压测;

  3. 压测节点根据分发的脚本与参数,实时或者本地计算后将压测数据推送至Kafka集群;

  4. Data Streaming集群实时消费Kafka集群中压测数据,然后再经过计算动态写入MySQL数据库中;

  5. 如配置了相关的Prometheus监控,MeterSphere在压测的同时会自动收集被压测端系统的性能监控数据;

  6. 压测结束后,所有的数据在数据库中保存,方便后续进行分析、分享和查询。

结合上述MeterSphere分布式压测方案原理,我们发现,MeterSphere分布式压测方案相对JMeter原生分布式压测方案具备以下几点优势:

  1. 管理方面的优势

■ 所有的压测脚本和依赖包,如JAR包等文件,都在MeterSphere进行统一的存储和管理,压测时由MeterSphere统一分发至不同的压测集群,并且支持分发时的CSV文件自动切分;

■ MeterSphere每次压测完成后,报告都会进行持久化存储,方便后续的查询、分享与分析使用,并在使用上支持对同一次的不同测试报告进行比对;

■ 支持团队、项目、人员、权限的管理。在一些大规模的性能测试中,有可能涉及到不同团队人员,比如运维人员、DBA、开发人员等,MeterSphere可以很好地进行不同团队人员的协同管理。

  1. 技术方面的优势

■ MeterSphere完全兼容JMeter的插件与协议栈,在MeterSphere中除了支持JMeter最常见的压测HTTP(HTTPS)协议外,还完全支持WebSocket、MQTT、FTP、SSH、数据库等方面的性能测试;

■ 所有的压测集群在收到MeterSphere压测任务时,都采用Docker自动启动JMeter,无需人为地部署JMeter机器,同时保证了所有压测节点的JMeter版本和Java环境的一致性;

■ 所有的JMeter压测主机无同一子网的网络依赖要求。基于这一特性,在MeterSphere中可以很容易地模拟不同地域的互联网流量访问,比如可以通过MeterSphere调度上海区域、杭州区域、北京区域等公有云的主机对目标系统进行压测;

■ 引入Kafka消息队列和Data Streaming计算集群,所有的压测数据不直接回传到MeterSphere,减轻了MeterSphere的压力(JMeter原生方案中压测数据是回传至主控机);

■ 内置集成Prometheus监控系统。在压测同时,用户可以自定义设置监控指标,除了常用的CPU、内存、磁盘等,同样可以支持MySQL连接数、JVM等监控指标;

■ 所有的组件(Kafka、Node Controller压测集群、Kubernetes压测集群、Data Streaming计算集群)都可以动态扩容扩展,当压测并发需要更高时可以动态扩容不同的组件,从而提升性能压测的并发能力。

MeterSphere分布式性能测试实践

  1. 部署MeterSphere平台

MeterSphere的平台部署方法可以参考官网(https://metersphere.io/docs/quick_start/quick_start/),官网给出了详细的一键部署脚本:

curl -sSL https://github.com/metersphere/metersphere/releases/latest/download/quick_start.sh | sh

  1. 部署分压测节点(Node-Controller)

部署分压测节点,可以先安装整个MeterSphere服务,然后对配置文件进行修改,具体操作如下:

① 安装MeterSphere:curl -sSL https://github.com/metersphere/metersphere/releases/latest/download/quick_start.sh | sh

② 停止服务:msctl down

③ 修改安装模式:vim /opt/metersphere/.env

在这里插入图片描述

④ 启动服务:msctl reload

  1. 界面添加分压测节点

登录到MeterSphere平台,依次选择“系统设置”→“测试资源池”,编辑NODE-LOACL资源池,添加分压测节点并保存。

在这里插入图片描述

  1. 上传本地JMX压测脚本和依赖文件

① 依次选择“性能测试”→“测试”→“创建性能测试”。

在这里插入图片描述

② 选择“加载JMX文件”选项,建议JMX压测脚本中不要采用前后置脚本,以免影响性能测试的准确性。

在这里插入图片描述

如果压测的JMX脚本中包含依赖的文件、第三方插件或者自定义JAR包,需要修改JMX脚本中的地址为绝对路径。

常见需要修改的有两个地方,具体如下:

■ 测试计划中的JAR包目录

在这里插入图片描述

■ CSV文件设置中的CSV地址

在这里插入图片描述

③ 如果压测的JMX脚本中包含依赖的CSV文件,或者第三方插件或者JAR,需要同时选择“加载文件”选项进行上传。

在这里插入图片描述

  1. 设置压力测试参数

进入“压力配置”页面,此时可以设置相应的压测配置参数了(注意:此参数会覆盖JMeter线程组中的配置)。

在这里插入图片描述

分配策略默认为均分,如果要不同压测节点分摊不同压力的话,可以选择“自定义”分配方式。此分配方式可以自定义设置不同的压力分配权重。

在这里插入图片描述

  1. CSV切分与配置监控

如果压测的JMX脚本中包含依赖的CSV文件需要不同的压测节点以读取不同的数据,可以开启“高级配置”页面下的“CSVDataSet”选项,进行CSV自动化切分,参见下图:

在这里插入图片描述

关于监控的配置和设计细节可以参考MeterSphere官方教程:https://blog.youkuaiyun.com/FIT2CLOUD/article/details/119673564。

此次添加的监控配置如下:

在这里插入图片描述

  1. 报告的查看、对比与分析

所有的配置完成后,选择“保存并执行”选项,MeterSphere会自动刷新与显示压测数据报告。

在这里插入图片描述

在压测的同时,可以通过后台查看,添加的分压测节点已经自动化运行JMeter容器进行压力测试。

在这里插入图片描述

MeterSphere生成的测试报告支持展示测试详情,在“测试详情”页面中可以选择不同的显示项和时间范围。一旦选择了时间范围,报告数值会按照选择时间范围进行重新计算。

在这里插入图片描述

在“监控详情”页面中,可以查看压测时被压测端的监控数据。

在这里插入图片描述

针对某一性能测试,可以在“报告对比”页面选择不同的报告,并进行对比分析。

在这里插入图片描述
在这里插入图片描述

总结

由此可见,MeterSphere开源持续测试平台的分布式性能压测相对于JMeter原生的分布式性能压测更适合测试团队和测试人员进行使用。

首先,MeterSphere的部署方案更简单,MeterSphere压测执行节点支持按需创建和安装,组件可以动态扩容,轻松支持大规模性能测试;

其次,MeterSphere更加易于管理,MeterSphere开源持续测试平台采用B/S架构设计,性能测脚本、性能测试任务和性能测试报告可以以项目、团队的维度进行有效隔离和分享协作。

相关推荐

防火墙开着,Docker端口却没拦住?1Panel几步搞定!

1Panel开源面板支持“容器端口防护”功能。

FIT2CLOUD飞致云的博客 7

大幅提升本地模型部署体验,1Panel开源面板v2.5.0版本发布

1Panel AI一体机(方案六)服务器版实测数据汇总。

FIT2CLOUD飞致云的博客 10

测评丨DeepSeek-V4.1-Flash-1017企业私有化部署实测报告

1Panel AI一体机(方案六)服务器版实测数据汇总。

FIT2CLOUD飞致云的博客 229

支持千问安全围栏模型,1Panel AI网关v1.6.0版本发布

新增上游账号多API Key、同一请求模型多映射、OpenAI兼容图像编辑接口、实时用户活动卡片与版本更新通知。

FIT2CLOUD飞致云的博客 286

飞致云开源社区月度动态报告(2026年10月)

为数智经济时代创造好软件。

FIT2CLOUD飞致云的博客 111

新增语音API与模型管理功能,1Panel AI网关v1.5.0版本发布

上游账号管理支持多种协议类型与错误历史查看。

FIT2CLOUD飞致云的博客 450

持续提升系统安全性与用户体验,JumpServer堡垒机v4.10.20 LTS版本发布

欢迎广大用户升级至新版本。

FIT2CLOUD飞致云的博客 251

安全漏洞和已知问题修复,MaxKB开源企业级智能体平台v2.10.8 LTS版本发布

欢迎升级至新版本MaxKB。

FIT2CLOUD飞致云的博客 191

支持SMB远程文件数据源,查询组件支持多条件搜索,DataEase开源BI工具v3.2.0版本发布

透视表条件样式支持指定范围,汇总表支持图片链接渲染与放大预览。

FIT2CLOUD飞致云的博客 81

离线安装方式上线,支持Token Plan,1Panel AI网关v1.4.0版本发布

进一步提升AI网关部署的灵活性与日常运维体验。

FIT2CLOUD飞致云的博客 186

KoKo、Tinker组件重构,会话录像支持批量下载,JumpServer开源堡垒机v5.1.0版本发布

命令过滤规则支持AI辅助起草

FIT2CLOUD飞致云的博客 182

修复多个安全漏洞,MaxKB开源企业级智能体平台v2.10.7 LTS版本发布

欢迎升级至新版本MaxKB。

FIT2CLOUD飞致云的博客 174

学习笔记丨MaxKB PPT/PDF文档整页转图工作流知识库方案

解决复杂图文文档知识入库难题。

FIT2CLOUD飞致云的博客 296

飞致云开源社区月度动态报告(2026年9月)

为数智经济时代创造好软件。

FIT2CLOUD飞致云的博客 247

1Panel AI网关智能路由新增支持Jev模式

面向多个自定义业务目标进行语义决策。

FIT2CLOUD飞致云的博客 296

电子表格支持嵌入集成,支持GaussDB数据源与StarRocks计算引擎,DataEase开源BI工具v3.1.0版本发布

新增箱线图图表类型,修复7项安全漏洞。

FIT2CLOUD飞致云的博客 450

操作教程|通过1Panel应用商店快速安装Laya

Laye开源模型已上架至1Panel应用商店。

FIT2CLOUD飞致云的博客 210

修复安全漏洞,支持箱线图与汇总表合并单元格,DataEase开源BI工具v2.10.27 LTS版本发布

公共链接支持独立访客权限控制,数据填报与定时报告功能增强。

FIT2CLOUD飞致云的博客 383

强化安全性,Text-to-SQL智能选表升级,SQLBot开源智能问数系统v1.10.2版本发布

强化账号安全初始化机制,新增泰语支持。

FIT2CLOUD飞致云的博客 437

实战丨飞致云面向自身销售场景打造专属CRM Skills

自然语言驱动CRM智能查询、创建、更新、转化、链路追踪与漏斗分析。

FIT2CLOUD飞致云的博客 239

跨越新高度:JumpServer V5 来了!

统一工作台,拥抱AI新时代!

FIT2CLOUD飞致云的博客 114

测评|双卡RTX Pro 5000 Blackwell+Qwen3.8-Flash-Next:WorkBuddy办公场景实测

业务场景一手测试数据解读。

FIT2CLOUD飞致云的博客 285

支持多种登录认证方式、支持MFA与重排模型,1Panel AI网关功能上新

新增支持为上游账号配置代理和更多实用功能。

FIT2CLOUD飞致云的博客 124

案例研究|中国土木构建“财小问”智能体,提升财务管理效率

MaxKB助力财务部门从重复劳动迈向智能决策。

FIT2CLOUD飞致云的博客 97

联合方案丨MaxKB+DataEase实现智能跨库问数

通过自然语言提问,在权限范围内获取一站式的可视化数据以及数据洞察结论。

FIT2CLOUD飞致云的博客 220

GPU监控支持华为昇腾设备,防火墙管理焕新,虚拟机管理下放至专业版,1Panel v2.3.0版本发布

持续完善1Panel在AI模型部署与硬件适配方面的能力。

FIT2CLOUD飞致云的博客 255

免费AI网关测评:LiteLLM、New API和1Panel AI网关

为企业运维团队、AI业务团队提供选型参考。

FIT2CLOUD飞致云的博客 289

告别积分焦虑!WorkBuddy+Qwen3.8-Flash-Next本地部署,实现AI办公自由

把算力自由握在自己手里。

FIT2CLOUD飞致云的博客 420

工作流支持默认模型设置,MaxKB开源企业级智能体平台v2.10.6 LTS版本发布

腾讯混元、腾讯云模型供应商合并为新“腾讯云”供应商。

FIT2CLOUD飞致云的博客 347

1Panel AI网关现已开放,10人及以下团队免费使用

助力小团队低成本落地AI规模化应用。

FIT2CLOUD飞致云的博客 382
上一篇: 社区分享丨雪花啤酒的JumpServer堡垒机使用体会
下一篇: MeterSphere开源项目GitHub Star数量超过7000
FIT2CLOUD飞致云
FIT2CLOUD飞致云 企业官方账号 企业官方账号
博客等级 码龄7年 3193粉丝 741原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值