Apache JMeter压力测试之分布式测试(多机联测)

来源:互联网 发布:吉林农产品交易所 知乎 编辑:程序博客网 时间:2024/05/01 07:10

引言

利用JMeter进行负载测试的时候,使用单台机器模拟数以千计的并发用户有些力不从心,在执行的过程中,可能会遇到诸如CPU、内存负载过高,address already in use,程序自动关闭等问题。这时可以使用分布式测试,即在多台机器上运行JMeter,以此获取更大的并发用户数。
关于分布式测试的详尽说明,可参阅官网资料,该文档也可在本地JMeter解压包中找到,位置为:%JMeter_HOME%/printable_docs/usermanual/jmeter_distributed_testing_step_by_step.html

下文作简要说明。

测试说明

为方便演示,在本教程中使用GUI模式。 实际测试时应该使用非GUI模式进行负载测试。

术语

Master(主控节点)
运行JMeter GUI,启动Slave,控制测试。
Slave(从节点)
运行jmeter-server,它从GUI接收命令并向目标系统发送请求。
Target(目标服务器)
要进行压力测试的网络服务器。

前置条件

(1) 所有的客户端(主节点、从节点)上的防火墙已关闭或已打开正确端口。
(2) 所有的客户端位于同一个子网。
(3) 如果使用192.x.x.x或10.x.x.x IP地址,则服务器位于同一子网中。 如果服务器不使用192.xx或10.xx IP地址,则无此限制。
(4) 确保JMeter可以访问服务器。
(5) 确保所有的客户端使用相同版本的JMeter和Java。混合版本将无法正常工作。

步骤

测试环境:
Win 10 + JDK 1.8 +Apache JMeter 3.2

(1) 在所有从节点,运行%JMeter_HOME%/ bin目录下的jmeter-server.bat —— 假定我们使用6台机器 192.168.0.10, ..., 192.168.0.15
(2) 在主节点的%JMeter_HOME%/ bin 目录,找到 jmeter.properties ,使用文本编辑器打开;
(3) 在打开的文件中查看“remote_hosts=127.0.0.1”这一行,remote_hosts 表示从节点信息。这里修改为:
     remote_hosts=192.168.0.10:1099,192.168.0.11:1099 ,192.168.0.12:1099 ,192.168.0.13:1099 ,192.168.0.14:1099 ,192.168.0.15:1099
     —— 其中1099 为 JMeter 的主节点和从节点之间进行通讯的RMI 端口号,使用默认端口号(1099)时,可不填,即直接填入IP地址即可。
(4) 保存文件,运行主节点上%JMeter_HOME%/ bin目录下的 jmeter.bat ,启动JMeter,打开要使用的测试计划。
(5) 点击 Run -> Remote Start 菜单,可以看到远程启动菜单下面有6个IP地址,如果要让某个节点执行,可以点击该节点的IP地址就可以。
(6) 如果要所有节点全部执行,可以点击Run-> Remote Start all ,或使用快捷键 Ctrl + Shift + R



Tips:
如果从节点不够用,也可将主节点同时作为从节点使用。方法如下:
(1) 修改主节点的 jmeter.properties 文件,将其IP地址写入;
(2) 先打开主节点,先运行jmeter-server.bat,然后再运行 jmeter.bat。
(3) 此时,进入Run -> Remote Start 菜单,可以看到主节点也作为从节点运行。