首页 > 代码库 > Jmeter分布式

Jmeter分布式

在进行性能测试的时候,随着压力的不断增大,会出现tps的瓶颈。

出现瓶颈,会有两个原因,1.服务器导致的瓶颈 ,2压力不够。

如果是压力不够的情况,要么换更好的机器进行压测,或者多台机器进行分布式压测。

Jmeter 如何开展分布式?

原理如下:

1.Jmeter分布式压测时,一台机器作为master,其他的则为slave,master负责请求的分发,slave负责执行。

2.执行时,master会把脚本发送到每台slaver上,slaver 拿到脚本后就开始执行,slaver执行时不需要启动GUI,如果引用到csv等外部的文件,则每台slaver所在的机器都需要相应位置放置该文件。

3.执行完成后,slaver会把结果回传给master,master会收集所有slaver的信息并汇总。

这里有一个坑,如果slave 和master是多网卡的机器,master去slave执行的时候,会把网卡中的任意一个网卡ip传过去,最后slave执行完后,把结果回传给master,如果这时回传给master是一个错误的ip,则会导致请求超时的情况,导致失败。

正确步骤如下:

1.启动slave,在slave机中jmeter-server中

windows 修改RMI_HOST_DEF=-Djava.rmi.server.hostname=10.120.11.82(slave机的ip)

运行jmeter-server,Windows运行jmeter-serve.bat

linux:

 ./jmeter-server -Djava.rmi.server.hostname=10.120.11.82(slave机的ip)

2.启动master

双网卡需要注意:master机需要指定自己机器的ip,要不则会出问题。

window:

新增set rmi_host=-Djava.rmi.server.hostname=10.120.11.214(master 的ip)

修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%

linux:

新增 rmi_host=“-Djava.rmi.server.hostname=10.120.11.214”(master 的ip)

修改ARGS="$SERVER $DUMP $HEAP $NEW $SURVIVOR $TENURING $PERM $CLASS_UNLOAD $rmi_host"

 修改完了后,开始压力测试:

windows:

修改jmeter.properties,

remote_hosts=10.120.11.82:1099(更换为slave的ip)

远程启动这台机器

linux:

./jmeter -n -t testPlan.jmx  -R 115.28.108.130 -l remote.jtl

linux下运行结果存在remote.jtl中。

 

注意:master和slave机中的jmeter版本必须一致(小版本也得一致)。

java的版本也得一致,不能一个java7一个java8.

 

Jmeter分布式