我工作中的笔记本配置还可以。但是在测试一个简单的TCP连接时,发现把线程数设置为10000时,我的笔记本会很快死掉。最终实验出我的笔记本可以承受的安全线程数是5000。可是对应用的最低性能要求就是能承受1w的并发。此时可以采用基于JMeter的分布式测试方案。
如刚才提到的,要求测试应用在1w并发下的表现,而一部计算机所能承受的线程数是5000,那么需要两部计算机。
步骤
具体步骤如下:
- 为两部机器都安装JMeter;
- 定义两部机器的角色,一部是master,一部是slave;我们直接操作master,而slave只是负责分担master的压力;
- 获取slave的ip地址,比如是192.168.1.12;
- 在master的JMeter目录下打开bin目录,编辑jmeter.properties文件。找到“remote_hosts=127.0.0.1”这一行,将之修改为“remote_hosts=127.0.0.1,192.168.1.112:1099”。其中1099是master和slave的RMI通信端口。编辑完后记得保存;
- 打开master上的JMeter,点击运行菜单项,运行->远程启动->选择要启动的slave的IP;如果需要全部启动,运行->远程全部启动即可。
注意事项
有几点需要注意:
1. 启动jmeter-server服务时,提示:
1 2 3 |
Could not find ApacheJmeter_core.jar … … Trying JMETER_HOME=.. Found ApacheJMeter_core.jar |
这个是开始没有找到ApacheJmeter_core.jar,后来去JMETER_HOME目录下去查找,最后找到了,如果不希望看到Could not find的字样,可以配置一下jmeter_home的路径(即bin目录的上一级目录),这样启动jmeter-server服务时,就只会看到Found ApacheJMeter_core.jar,当远程访问时,会看到控制台上打印出一行:Starting the test on host [ip]:1099 @….(大概是这样的,@后面是执行开始的时间),远程执行结束,会打印一行:Finished the test on host [ip]:1099 @…,表示远程执行结束。
2. 留意一下1099端口,目前暂未确定这个端口是不是可以改的(按理说这个是可以从配置文件中修改的,目前还没有找到如何修改Agent上面的配置,Controller上面的还好修改)
3. Jmeter分布式控制过程中,各个Agent启动的线程数等于线程组中的配置,不是均分线程组中的配置。
两台机器都需要开启jmeter服务么?如何开启服务?
请看一下具体步骤。配置完成后需要保证可以telnet