jmeter集群5.4+默认强制要求TLS/RMI加密通讯

报错日志

Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; 
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)

意思是 JMeter worker 在启动 RMI 服务时找不到 rmi_keystore.jks 证书文件
JMeter 5.4+ 之后,分布式模式 强制要求 TLS/RMI 加密,如果不提供 keystore,就直接挂掉。

解决方案

方案 A:关闭 TLS 校验(最简单)

加上环境变量 跳过 keystore 校验在master/ worker 服务里加

1
2
3
4
5
jmeter-worker:
image: justb4/jmeter:5.6.3
networks:
- jmeter-net
command: jmeter-server -Dserver.rmi.ssl.disable=true

这样 worker 启动时就不会去找 rmi_keystore.jks 了。
👉 适合测试环境/快速验证。

方案 B:配置 keystore(更安全,官方推荐)

  1. 生成 keystore 文件:

    1
    keytool -genkeypair -alias rmi -keyalg RSA -keysize 2048 -keystore rmi_keystore.jks -storepass changeit -validity 365

    (注意存放到项目目录下,比如 ./jmeter-ssl/

  2. docker-compose.yml 里挂载:

    1
    2
    volumes:
    - ./jmeter-ssl/rmi_keystore.jks:/opt/jmeter/bin/rmi_keystore.jks
  3. 启动时设置系统属性:

    1
    2
    3
    command: jmeter-server \
    -Djavax.net.ssl.keyStore=/opt/jmeter/bin/rmi_keystore.jks \
    -Djavax.net.ssl.keyStorePassword=changeit

👉 适合生产/正式压测场景。