一、为什么使用
当需要执行大量线程并发时,通常由于压力机本身配置限制,以及单压力机网络流量带宽上限,导致单台压力机无法有效施压。
测试性能的瓶颈在于压力机,而不是系统应用服务器,就需要使用jmeter的分布式压测技术,以达到执行大量线程并发施压的目的。
如何判断瓶颈是否出现在压力机身上呢?
1、当单台压力机线程数增加,比如从300线程增加到500线程,服务器接口tps却不在等比例增加;
2、并且接口响应时间却很好,响应时间较低且无明显增加;
则可判断服务器完全能承接更大的压力,是压力机到了瓶颈。此时可以查看压力机各项硬件网络性能指标确认。对于linux压力机的场景来说,通常压力机的硬件配置都不错,更多的可能性是出现压测接口响应内容太多,导致高并发压测时网络带宽打满,从而导致压力上不去。
二、分布式压测linux配置
分布式压测分为一台master机器和多台slave机器,master机器主要用于控制多台slave机器运行并汇总运行结果。当然,压力机资源紧张时,master机器只做控制机有点浪费,也可以通过配置让master机器也作为施压机,既做控制机又做施压机。
1、配置工作准备
master配置:
jmeter.properties文件,remote_hosts配置上slave端的IP,多个slave地址用逗号分隔;
master上已上传脚本文件和参数化文件;
slave配置:
jmeter.properties文件,server.rmi.ssl.disable = true;
jmeter4.0以上才需要修改,4.0以下没有这个字段值;
slave上参数化文件要放在jmeter的bin目录下;
2、分布式压测运行
1、slave上启动./jmeter-server
./jmeter-server
2、在master上执行分布式压测命令
sh jmeter.sh -n -t X.jmx -l X.jtl -e -o /xxx/html/report -r
注意:slave机器上参数化文件要放在jmeter的bin目录下,不放就运行不了。
3、执行结束后下载HTML报告到本地用于填写报告使用
进入repoter文件夹下,打包report文件夹:
zip -r repoter.zip ./*
./*是指将当前目录下的所有文件和文件夹全部压缩
4、收尾工作
最后,为了方便下次使用以及不影响别人使用,请将你本次压测生成的result文件夹下的.jtl文件和report文件夹下的所有文件清空,并ctrl+c结束掉master机器和slave机器上启动的jmeter-server进程。