1.jmter的下载和安装
jmter官网:jmeter下载
2.window和linux都配置好java环境
3.window配置jmeter环境变量直接进入解压后的bin目录双击jmterer.bat运行
4.本次测试是用了一台window一台linux,linux为远端执行负载,根据业务并发需要,可参照配置配置多台执行器
5.jmeter.properties修改
#配置远程负载机ip和端口号多个用英文逗号隔开,这用于window主控界面远程运行时用,脚本执行时会被R参数覆盖
remote_hosts=执行负载机ip:执行负载机服务端口
#作为负载机是指定的端口号,不指定随机分配,可指定为1099,remote_hosts指定的端口需要相同
server.rmi.localport=4000
#开启rmi,远程执行时用于文件传输互联
server.rmi.ssl.disable=true
#更改默认字符编码为utf8
sampleresult.default.encoding=UTF-8
#将主控机window设置为永久中文显示,Linux可不用设置
language=zh_CN
6.window主控机bin目录下运行create-rmi-keystore.sh生成rmi_keystore.jks文件,并将该文件复制到linux远程执行负载机bin目录下
7.window主控机新建测试任务进行远程运行请求
8.可查看jmeter的日志查看运行情况,jmter的日志默认存放于bin目录下,找对应运行的服务命令即可
9.如果服务报rmi相关异常则把上面的rmi配置打开
10.linux运行
#未配置环境变量,进入bin目录下后台启动
./jmeter-server &
#配置了环境变量,直接在任意目录下后台启动命令
jmeter-sercer &
11.如果远程运行,久久不能返回,此时可上执行负载机查看日志
导致此报错的原因是,主控节点多网卡的时候,window主控机发送远程执行时携带的ip为本机的非网站连接ip,导致执行机执行完毕回调时报错,导致主控机看不到返回结果;
解决方法1:打开自己的网卡管理器,禁用非联网网卡即可:
解决方法2:
在启动脚本jmeter.bat中添加rmi的hostname
-Djava.rmi.server.hostname=本机可联网ip及执行负载机能访问的ip
%JM_START% "%JM_LAUNCH%" %ARGS% %JVM_ARGS% -Djava.rmi.server.hostname=127.0.0.1 -jar "%JMETER_BIN%ApacheJMeter.jar" %JMETER_CMD_LINE_ARGS%
解决方法3:
在bin目录下的system.properites最后一行添加hostname参数
java.rmi.server.hostname=127.0.0.1
12.rmi报错
Server failed to start: java.rmi.RemoteException: Cannot start. VM_0_4_centos is a loopback address.
An error occurred: Cannot start. VM_0_4_centos is a loopback address.
解决:将启动文件jmeter-server配置进行修改为自己的服务器ip
vim jmeter-server
RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
或者使用启动传入参数方式修改
./jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
13.window执行等待报错
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
该错误为在执行主机等待执行负载机回调超时时报的错,一般原因是,负载机拿到的回调ip访问不了主执行机,回调不成功导致的,这时可查看执行负载机接收到的ip,应该会有相关日志记录。