JMeter性能实践过程中,一旦进行高并发操作时就会出现以下尴尬场景,JMeter客户端卡死、请求错误或是超时等,导致很难得出准确的性能测试结论。目前沐沐知道的有两个方法可以解决JMeter支撑高并发,一是将JMeter部署在Linux服务器上,可以支撑的并发量远大于windows客户端,极少出现JMeter客户端卡死的情况;另外一种方式就是今天要介绍的分布式,简单来说,分布式就是将一次大的操作分布在多个服务器上,由多个服务器来承担负载压力。分布式并发的原理详见下图:
1、打开Jmeter,在运行->远程启动,可以看到只有“127.0.0.1”因此首先要在主压力机上配置远程负载机的IP,配置步骤如下:
(1)Master(主压力机)在jmeter.properties中添加remote_hosts
配置路径:...\apache-jmeter-3.2\bin 路径下的jmeter.properties;
remote_hosts=127.0.0.1 后面增加远程负载机的ip和端口号,如果需要添加多个,用逗号分隔就可以;
例如:remote_hosts=192.168.**.***:1099,192.168.**.***:1099
(2)Slave(远程负载机)在jmeter.properties中添加server_port:
server_port=1099
server.rmi.localport=1099
(备注:这里的端口号可以自定义,只要与主压力机里面配置的一致即可)
(3)Slave(远程负载机)启动Jmeter-server,启动成功后如下图所示:
2、配置完成后重启主压力机,查看远程启动,可查看到配置的远程负载机IP,如下图:
3、添加一个接口,进行远程启动
(1)添加一个线程组,然后添加一个Sampler里的HTTP请求
(2)以百度为例,添加监听器->查看结果树
(3)点击运行->远程全部启动,运行后查看结果树:
截止目前,分布式并发的配置已经完成,如果需要添加多台远程负载机,重复以上操作即可。
配置过程虽然很简单,但是也不是一帆风顺,在远程启动时遇到了拒绝链接的问题,如下截图显示:
遇到这种情况时,可能存在多种因素,可以参考以下步骤逐一排查
远程负载机的Jmeter-server是否启动成功;
远程负载机是否处于联网状态;
防火墙是否处于关闭状态;
主压力机和远程负载机的Jmeter版本是否一致;
沐沐在实战过程中也出现了这个问题,经过一番排查终于找到问题原因,是因为远程负载机上启动JMeter时,用jmeter.bat进行的启动,而不是jmeter-server.bat;希望大家在不要像沐沐一样,犯这样低级的错误。
The more we share,The more we have.
希望这篇文章对大家有用...