问题背景

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

解决方法

利用 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 的分布式压测的实践中具体配置和小结提示,大家可以收藏。

大家可持续关注大话性能公众号,不断学习测试实战技能和高薪岗位内推。


↙↙↙阅读原文可查看相关链接,并与作者交流