最近在给产品线做基于dubbo协议的java服务测试,我本机没有配置dubbo服务容器,先让同事提供测试类,我再对测试类工程导入jmeter的jar包,封装成jmeter可执行的jar包。基于本次性能测试的要求,要把脚本放在linux下部署好了 dubbo服务的机器上测试,多次尝试后选择了用jmeter远程分布式调用的方式。
jmeter远程分布式调用,可以使用本机做控制端,其他已经搭建好dubbo协议的电脑或者linux服务器做测试服务端
配置要求是两台windows机(ip:134.33.***.170:1888,134.22.***.20:1899)和linux服务器(ip:130.17.***.129:2099)都使用相同版本的jmeter,本次测试使用的是apache-jmeter-3.1
首先配置window控制端修改jmeter.properties,在remote_hosts=添加远程服务端地址和端口
其次配置windows服务端 修改jmeter.properties,取消server_port=1899和server.rmi.localport=1899前面的注释,设置远程端口为1899,默认为1099,建议修改一个其他数值。
启动jmeter_server会显示一个
这里的ip地址就是和控制端配置的remote_hosts一致。
报错问题记录:
1、配置完成后测试提示connnection refused 原因是:服务端的防火墙为关闭,禁止访问,关闭防火墙就可以ping通
2、可以访问后再测试提示:
原因就是如果服务端的jmeter.properties中的server_port和server.rmi.localport端口未指定,打开jmeter_server后端口是变化的无法捕捉。
接下来配置linux服务器的jmeter.properties的server_port=2099和server.rmi.localport=2099。在/apache-jmeter-3.1/bin下执行./jmeter_server提示endpoint为127.0.0.1:2099,控制端调用的时候提示
查找原因如下:服务器配置了双网卡,内外网的隔离,jmeter在启动时会优先找内网地址,不识别配置的服务器地址,修改方法如下:修改/ossapp/apache-jmeter-3.1/bin下的jmeter_server文件修改RMI_HOST_DEF=-Djava.rmi.server.hostname=130.17.**8.129保存。在windows控制端重新测试,完美执行,监控linux下日志