JMeter 4/5端口设置方法及跨机测试端口差异与失败原因排查
嗨,我来帮你梳理这两个JMeter的问题,一步步给你拆解~
不管是JMeter 4还是5,你日志里提到的这个端口是JMeter用来接收Shutdown、StopTestNow这类控制命令的RMI监听端口,设置方式主要有两种:
启动时临时指定(适合单次测试)
直接在启动测试的命令里加JVM参数就行,比如你用的4446、4445就是这么设置的,命令格式像这样:jmeter -n -t your_test_script.jmx -Dserver.rmi.localport=4446也可以用
-Djmeter.rmi.port=XXXX参数,效果完全一样,都是指定JMeter监听控制命令的端口。修改配置文件永久生效
找到JMeter安装目录下bin文件夹里的jmeter.properties文件,打开后找到下面这行配置:# server.rmi.localport=4000去掉开头的注释符
#,改成你想要的端口号,比如:server.rmi.localport=4446保存文件后重启JMeter,之后每次启动测试都会默认用这个端口了。
先看你的日志:第一台有正常的请求采样数据(summary里的请求数、响应时间都正常),而第二台的summary显示0请求,说明测试根本没执行任何请求就结束了,端口4445和4446的差异不是直接原因,这个端口只是监听控制命令用的,和请求能不能跑起来没关系。重点排查这几个方向:
脚本或依赖文件不完整
第一台的脚本路径是/home/ouitead/scriptsJmeter/TdC_15012019/all_tu.jmx,第二台是/scriptsJmeter/all_tu.jmx。要检查:- 脚本里有没有引用外部文件(比如CSV数据源、配置文件)?这些文件在第二台机器上是否存在,路径和脚本里写的是否一致?
- 脚本里用了JMeter插件吗?比如自定义函数、第三方Sampler,如果第二台机器没装对应的插件,脚本可能没法正常初始化请求,自然没有采样结果。
JMeter环境不匹配
- 两台机器的JMeter版本是不是一样?如果第一台是4.x,第二台是5.x(反过来也一样),脚本里的某些组件可能存在兼容性问题,导致无法执行。
- JDK版本是否符合要求?JMeter 4和5都需要JDK 8及以上版本,要是第二台机器的JDK版本太低或者损坏,会导致JMeter没法正常运行。
目标服务访问受限
测试的目标服务器,第二台机器能正常连接吗?比如:- 两台机器的网络环境不同,第二台被防火墙挡住,没法访问目标服务的端口;
- 目标服务的IP白名单没有包含第二台机器的IP,导致请求被拦截,自然没有请求结果。
测试启动参数差异
第一台启动时用了-e -o /report/TU_27_02来生成测试报告,第二台的日志里没看到这些参数,是不是启动命令里的其他配置不一样?比如线程组的线程数、运行时长设置,会不会第二台的配置根本没触发请求执行?
如果还找不到问题,建议在第二台机器上用GUI模式打开脚本,看看有没有报错提示,这样更容易定位问题~
内容的提问来源于stack exchange,提问作者Sami

