转 15 jmeter分布式性能测试
15 jmeter分布式性能测试
背景
由于jmeter本身的瓶颈,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起Java内存溢出的错误。要解决这个问题,可以使用分布式测试,运行多台机器运用所谓的Agent来分担jmeter自身的压力,并借此来获取更大的并发用户数,但是需要进行相关的一些修改。
总结一句话,jmeter由java开发,耗内存、cpu,所以大并发下还是需要分布式的。
测试步骤
1.关闭防火墙。
2.在所要运行jmeter并作为负载生成器的机器上安装jmeter,并确定其中一台机器作为Controller,其他机器作为Agent。然后运行所有Agent机器上的jmeter-server.bat文件。假定我们使用两台机器192.168.0.11和192.168.0.12作为Agent(Agent机器上必须安装JDK,并设置环境变量)。
3.在Controller机器上的%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为端口号。
4.启动controller机器上的jmeter.bat,选择菜单Run中“远程启动”中的192.168.0.11:1099或192.168.0.12:1099来分别运行Agent。如果两个都要执行,可以点击Run菜单下的“远程全部启动”。
5.有时候用作代理的机器太少,仍不能满足需要,则需要将作为Controller的电脑也当做Agent,则同样需要修改jmeter.properties文件,将Controller的IP写入。同时,这个时候需要先打开Controller电脑中%JMeter_home%/bin目录下的jmeter-server.bat,然后再打开jmeter.bat。此时,进入Run下的“远程启动”菜单,可以看到Controller也作为远程机器进行运行。
常见问题
1.确定在controller机器上安装jdk版本和jmeter一致。
2.Agent机器启动jmeter-server.bat时,后台提示:“Could not find ApacheJmete_core.jar”。
解决方法:这个是开始没有找到ApacheJmete_core.jar,如果不希望看到Could not find的字样,需要添加环境变量JMETER_HOME,路径为bin目录的上一级目录,这样启动jmeter-server服务时,就不会看到“Could not find ApacheJmete_core.jar”。
3.jmeter分布式控制过程中,各个Agent启动的线程数等于线程组中的配置。