新手区 jmeter 分布式压测详细配置和举例说明,还小结一些注意事项,避免踩坑

hutong · 2018年09月11日 · 最后由 hutong 回复于 2018年09月19日 · 890 次阅读

问题背景

当有些项目的用户数比较大的时候,我们进行压测的时候也需要较大的并发,而单台服务器的能够发送的并发量毕竟是有限的,那如何增加并发量呢?

解决方法

利用jmeter的分布式压测,jmeter为了提升并发量,支持分布式压测,1台master,多台salve,一般来说,master只做统计收集、下发脚本的工作,而不作为施压机,主要是出于性能考虑。
Linux下安装jmeter简单,直接把jmeter上传到Linux服务器(服务器上只需要安装好java即可)。进入apache-jmeter的bin目录下,更改jmeter为可执行权限。即安装成功。
在其他多台机器上按照同样的方法部署好jmeter。

举例说明

下面具体举例说明,

更多工作中的测试技能干货,大家可以关注微信公众号<大话性能>,会持续不断分享。

http://dwz.cn/NNW9Wm5G

现在假设,压力机共4台,10.151.71.185、10.151.71.186、10.151.71.187、10.151.71.192
其中10.151.71.185同时作为master,其他3台只做slaver。

1、在作为slaver的机器上运行jmeter-server;
上面4台按照安装的步骤,同时把jmeter安装在同一个目录/home后,进入bin目录,修改3台slaver机器下的jmeter-server为可执行,并执行./jmeter-server。执行成功后显示如下:

2、上传压测脚本和外部读取的csv文件;
只需要上传UDPtest.jmx脚本到master服务器,节点机不需要上传,压测脚本自动会发到slaver试压机上;但是,如果脚本中涉及从外部读取的csv文件,那该文件就需要上传到各个slaver施压机上。
3、在master机器上修改remote_hosts;
进入到master 185这台服务器的jmeter的bin目录下,修改jmeter.properties。修改如下,添加各个slaver节点机的ip,默认通信端口为1099;

上述方法是写死了各个slaver机器ip到配置文件中,若想动态的挑选其中部分压测机,可以采用命令行选项的方式,即在master机器运行命令的时候添加 -R ip:port,ip:port的方法;
4、在master 运行脚本;
发起压测,在master机器上进入jmeter的bin目录下,执行如下命令:./jmeter –n –r –t /home/UDPtest.jmx
要提前结束需要ctrl+c,若要重新启动分布式压测,需要在各个slaver上启动./jmeter-server。然后再master上重新执行步骤4即可。

【友情提示】:

A、若是脚本中设置的并发线程数是100,采用3台slaver机器去施加压力,那么对于服务端来说,此时的并发线程数是300。
B、为了减少出错的可能性,最好按照如下Jmeter 分布式要求:
1、各个机器在相同目录下安装相同版本的jdk;
2、各个机器在相同的目录下安装相同版本的jmeter;
3、配置/etc/hosts的IP和hostname的映射。
4、修改各个机器的jmeter的默认内存参数,从512m调整为合适大小。

以上就是jmeter的分布式压测的实践中具体配置和小结提示,大家可以收藏,更多测试实战技能内容可以关注公众号大话性能,继续学习。

共收到 15 条回复 时间 点赞

大家可以收藏

一般多少并发需要使用到slave,如何去评测这个值?

zhu_wb 回复

一方面取决于服务器本身配置,配置高可以发起的并发就多,另一方面也取决于被测试服务器的处理快慢,如果tps很快,压测机这边发送请求的速度也会很快,消耗的资源就会多。因此在实践中,如果单台机器压测时候,观察cpu使用率超过80%多的时候,就可以考虑使用slave。

3、配置/etc/hosts的IP和hostname的映射。 这个可以稍微给点详细信息么,还有就是 作为master的jmeter 方位其他节点的jmeter时 需不需要linux的账户权限呢

就是先看下机器的域名,命令是hostname,然后vi /etc/hosts 添加一条ip 和hostname即可。第二个问题没看懂


写完也发个帖子出来

M.W 回复

666

不建议master机同时施压。。。

jiagd0105 回复

是的,这里只是举个例子,master还是只做收集用为好

hutong #10 · 2018年09月12日 作者

其实大家可以思考,怎么用脚本自动化启动分布式压测。

请问【2、上传压测脚本】这个master和salver一起施压吗

hutong #12 · 2018年09月14日 作者

这个根据前面的配置,如果前面hosts配置了master机器一起当压测机,你就会一起施压,如果没配置,那是不会的。

hutong 回复

嗯,明白了
还有两个疑问
1、master机这时候得到的报告就是整个压测的情况是吗?每个salver机上面是够还可以输出的报告,相当于这台salver的压测报告?
2、多台salver的时候,是怎么调整每台salver的线程数的,master自动分配?这样每台salver的发起线程是差不多的?
(没有条件做分压,所以问题比较多😂

hutong #14 · 2018年09月17日 作者

问题1:
master机器上出的结果,是所有机器汇总后的性能测试结果。
问题2:
每台salve机器上起的线程数是一样的,脚本里假设线程数是10,5台slave的话,每台10个线程,共50个线程对服务器压测。

hutong #15 · 2018年09月19日 作者

实践出真知,而不是看看

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册