jmeter之分布式压测

适用版本:jmeter5.3

一、jmeter主机配置

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

image-20210509182619818

在jmeter.bat文件中配置

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

我的ip地址

image-20210508213110371

image-20210509183125229

二、配置Slave ip和端口

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

下面2种任选其一都可以

image-20210509183634011

开放端口:

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

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

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

image-20210509183951584

二、启动Slave

在bin目录下执行

./jmeter-server
然后从master启动

image-20210509184239951

以上分布式即可执行

关健日志查看

master机器:

jmeter.log文件

Slave机器:

./jmeter-server 输出的日志

tailf jmeter-server.log

问题1:

Engine is busy - please try later

image-20210509182834125

重启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填写的是

image-20210509185748890

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

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

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

所以要改成

../Data/username1.csv

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

image-20210509190339120

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

posted @ 2021-05-09 19:06  Walker~  阅读(283)  评论(0)    收藏  举报