
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测试。
1. 文件选项
向“分布式JMeter执行器”提供测试(.jmx)文件时,执行器将根据SLAVES_COUNT环境变量指定的数量创建从节点pod,并在所有从节点上分配测试任务。
2. Git选项
通过执行器的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文件>
更多信息可参考https://github.com/kubeshop/testkube-executor-jmeter/tree/main/examples/gitflow%E3%80%82
确保本地安装并配置以下工具(需在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存储执行器运行测试所需的配置信息,结构如下:
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 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务