在进行性能测试的时候,随着压力的不断增大,会出现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.