背景:
由于Jmeter本身的瓶颈,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。要解决这个问题,可以使用分布式实测,运行多台机器运行所谓的Agent来分担Jmeter自身的压力,并借此来获取更大的并发用户数,但是需要进行相关的修改,具体如下。
操作步骤
1、安装Jmeter,并确定期中一台机器作为Controller, 其他的机器作为Agent。 然后运行所有Agent机器上的Jmeter-server.bat文件---假定我们使用两台机器 IP 192.168.0.11 和 192.168.0.12 作为 Agent;(Agent机器上必须安装jdk, 并设置环境变量)
2、在Contorller机器的 %JMeter_home%/bin下, 编辑Jmeter.properties 中 "remote_hosts=127.0.0.1" . 其中的127.0.0.1表示运行jmeter Agent 的机器,这里需要修改为"remote_hosts=192.168.0.11:1099, 192.168.0.12:1099" ---其中1099 为端口号。
3、启动 controller 机器上的jmeter.bat , 选择菜单Run中 "Remote Start" 中的 192.168.0.11:10099, 192.168.0.12:10099
来运行Agent。
4、如果要让某个电脑执行,可以点击该电脑的IP地址就可以, 如果两个都要执行,可以点击Run菜单下的"远程运行全部" 菜单
5、有时候用作代理的机器太少,扔不能满足需求,则需要将作为Contorller的电脑也当做Agent,则同样需要修改Jmeter.properties文件,将Contorller的IP 地址写入。 同时, 这个时候,需要先打开Contorller电脑中Jmeter下bin目录下的jmeter-server.bat, 然后在打开jmeter.bat, 此时, 进入 Run --remote start菜单, 可以看到Contorller也作为远程机器进行运行。
常见问题:
1、 确定在Contorller 机器上安装jdk版本 和jmeter一致
2、Agent机器启动 jmeter-server.bat 时, 后台提示:"could not find ApacheJmeter_core.jar"
解决办法:这个是开始没有找到 ApacheJmeter_core.jar, 如果不希望看到could not find的字样,需要添加环境变量 HMETER_HOME, 路径为bin目录的上一级目录,这样启动jmeter-server服务时, 就不会看到could not find ApacheJmeter_core.jar。
3、Jmeter分布式控制过程中, 各个Agent启动的线程数等于线程组中的配置。