Testkube的分布式JMeter执行器(Distributed JMeter Executor)是JMeter执行器的扩展,能够通过创建从节点pod并在其中分配测试任务,以分布式模式运行JMeter测试。
执行器是封装在Docker容器中的程序,它接收基于OpenAPI的JSON格式文档(testube.Execution)作为输入,并返回JSON格式的输出流(testkube.ExecutorOutput),每条输出行均封装在该JSON中,类似结构化日志的设计理念。
本执行器在JMeter执行器的基础上扩展,除具备JMeter执行器的所有功能外,重点支持分布式测试模式,适用于需要大规模负载测试或复杂配置的场景。
继承JMeter执行器的全部功能,包括标准JMeter测试执行能力。
plugins目录定义测试所需插件。user.properties文件覆盖JMeter默认的user.properties配置。适用于需要通过分布式架构提升JMeter测试性能、模拟大规模用户负载的场景,尤其适合以下用户:
MASTER_OVERRIDE_JVM_ARGS / SLAVES_OVERRIDE_JVM_ARGS
用于覆盖JMeter主节点/从节点的默认内存选项。
示例:MASTER_OVERRIDE_JVM_ARGS=-Xmn256m -Xms512m -Xmx512m
SLAVES_COUNT
指定分布式JMeter测试所需的从节点pod数量。
示例:SLAVES_COUNT=3。若未提供或值为1,执行器将以独立模式运行测试。
MASTER_ADDITIONAL_JVM_ARGS / SLAVES_ADDITIONAL_JVM_ARGS
为主节点/从节点添加额外JVM参数。
示例:MASTER_ADDITIONAL_JVM_ARGS=-Xmx1024m -Xms512m -XX:MaxMetaspaceSize=256m
SLAVES_ADDITIONAL_JMETER_ARGS
为JMeter服务器/从节点提供额外JVM参数。
示例:SLAVES_ADDITIONAL_JMETER_ARGS=jmeter-server -Jserver.rmi.ssl.disable=true -Dserver_port=60000
以下指南详细说明如何在分布式环境中运行JMeter测试。
向“分布式JMeter执行器”提供测试(.jmx)文件时,执行器将根据SLAVES_COUNT环境变量指定的数量创建从节点pod,并在所有从节点上分配测试任务。
通过执行器的Git流程,可使用分布式JMeter执行器的高级功能(JMeter执行器不支持):
example文件夹。plugins目录,并放入所需插件JAR文件。user.properties文件,以覆盖JMeter默认配置。Git仓库目录结构示例:
github.com/<username>/<reponame>/ ├── test1/ │ ├── testfile1.jmx # 测试用例文件 │ ├── userdata.csv # 测试数据文件 │ ├── user.properties # 自定义配置文件 │ └── plugins/ # 插件目录 │ ├── plugin-manager.jar # 插件JAR文件 │ └── <其他插件JAR文件> └── test2/ ├── testfile2.jmx ├── userdata.json ├── user.properties └── plugins/ └── <插件JAR文件>
更多信息可参考分布式JMeter的GitFlow示例测试。
确保本地安装并配置以下工具(需在PATH中可用):
data/目录(已被git忽略),用于JMeter运行和结果存储。data/目录中创建JMeter XML项目文件,命名为test-content。execution.json(建议保存至项目根目录的temp/目录,已被git忽略):
json{ "id": "jmeterd-test", "args": [], "variables": {}, "content": { "type": "string" } }
RUNNER_SCRAPPERENABLED、RUNNER_SSL和RUNNER_DATADIR,并使用make run命令运行执行器(指定execution.json路径):
bashRUNNER_SCRAPPERENABLED=false RUNNER_SSL=false RUNNER_DATADIR="./data" make run run_args="-f temp/execution.json"
执行JSON存储执行器运行测试所需的配置信息,结构如下:
json{ "args": ["-n", "-t", "test.jmx"], "variables": { "example": { "type": "basic", "name": "example", "value": "some-value" } }, "content": { "type": "string" } }
["-n", "-t", "test.jmx"](-n:非GUI模式,-t:指定测试文件){"example": {"type": "basic", "name": "example", "value": "some-value"}}"string")bashRUNNER_SSL=false # 存储后端是否使用HTTPS(本地开发设为false) RUNNER_SCRAPPERENABLED=false # 是否启用结果抓取(本地开发设为false) RUNNER_DATADIR="./data" # 数据目录路径(指向步骤1创建的data/目录)
testkube命名空间)构建镜像:使用make docker-build-local命令构建新执行器镜像。默认标签为kubeshop/testkube-executor-jmeter:999.0.0,可通过LOCAL_TAG环境变量自定义标签。
使镜像在Kubernetes中可访问:
kind load docker-image <镜像名> --name <集群名>(示例:kind load docker-image testkube-executor-jmeter:999.0.0 --name testkube-k8s-cluster)minikube image load <镜像名> --profile <集群配置名>(示例:minikube image load testkube-executor-jmeter:999.0.0 --profile k8s-cluster-test)编辑Job模板:修改testkube-api-server ConfigMap,将imagePullPolicy设为IfNotPresent:
bashkubectl edit configmap testkube-api-server --namespace testkube
找到job-template.yml键,在containers部分修改:
yamlimagePullPolicy: IfNotPresent
更新执行器配置:修改testkube-api-server ConfigMap,将JMeter执行器镜像改为新构建的镜像:
bashkubectl edit configmap testkube-api-server --namespace testkube
找到executors.json键,更新name为jmeter-executor的执行器配置:
json"executor": { "image": "<新镜像名>" }
重启API Server:
bashkubectl rollout restart deployment testkube-api-server --namespace testkube
Testkube现在将使用新镜像运行执行器,可通过偏好的方式调度测试。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429