jmeter之分布式压测

适用版本:jmeter5.3

一、jmeter主机配置

1、打开jmeter.properties,配置master机器地址和端口

jmeter之分布式压测

在jmeter.bat文件中配置

set rmi_host=-Djava.rmi.server.hostname=本地ip地址
set   ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%

我的ip地址

jmeter之分布式压测

jmeter之分布式压测

二、配置Slave ip和端口

进入服务器打开jmeter.properties 中,配置Slave服务器的ip

下面2种任选其一都可以

jmeter之分布式压测

开放端口:

server_port=8899
server.rmi.port=8899
server.rmi.localport=8899

配置jmeter -server,在最后一行中配置

RMI_HOST_DEF=-Djava.rmi.server.hostname=本机ip

jmeter之分布式压测

二、启动Slave

在bin目录下执行

./jmeter-server
然后从master启动

jmeter之分布式压测

以上分布式即可执行

关健日志查看

master机器:

jmeter.log文件

Slave机器:

./jmeter-server 输出的日志

tailf jmeter-server.log

问题1:

Engine is busy - please try later

jmeter之分布式压测

重启Slave即可解决

问题2:

Server failed to start: java.rmi.server.ExportException: Port already in use: 8899; nested exception is: 
        java.net.BindException: Address already in use (Bind failed)
An error occurred: Port already in use: 8899; nested exception is: 
        java.net.BindException: Address already in use (Bind failed)

杀掉进程

ps ax | grep "ApacheJMeter.jar" | awk '{print $1}' | xargs kill

问题3:

 Could not read file header line for file ..\Data\username1.csv

该问题是脚步路径描写错误

分布式测试中,参数文件(例如:CSV Data Set Config)的路径master和Slave机器需要保持一致

我这里master的路径是

E:\apache-jmeter-5.3\Data\username1.csv

Slave的路径是

/opt/apache-jmeter-5.3/Data/username1.csv

由于master和Slave路径不一致,所以这里只能使用相对路径去写

master填写的是

jmeter之分布式压测

但是使用Slave线程去跑的时候就会报上面的错误,使用master线程去跑的时候就有问题。

从上面给出的路径可以看出2个路径除了盘符不一致,路径分割符页不一致,

\这种符合在Windows机器可以运行,在Windows是不可以的。

所以要改成

../Data/username1.csv

在线程组中添加${__machineName()}

jmeter之分布式压测

可以看到2种线程完美运行。

上一篇:Docker(20)- docker rmi 命令详解


下一篇:Java实现远程服务生产与消费(RPC)的4种方法-RMI,WebService,HttpClient,RestTemplate