基于JMeter进行分布式测试

我工作中的笔记本配置还可以。但是在测试一个简单的TCP连接时,发现把线程数设置为10000时,我的笔记本会很快死掉。最终实验出我的笔记本可以承受的安全线程数是5000。可是对应用的最低性能要求就是能承受1w的并发。此时可以采用基于JMeter的分布式测试方案。

如刚才提到的,要求测试应用在1w并发下的表现,而一部计算机所能承受的线程数是5000,那么需要两部计算机。

步骤

具体步骤如下:

  1. 为两部机器都安装JMeter;
  2. 定义两部机器的角色,一部是master,一部是slave;我们直接操作master,而slave只是负责分担master的压力;
  3. 获取slave的ip地址,比如是192.168.1.12;
  4. 在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通信端口。编辑完后记得保存;
  5. 打开master上的JMeter,点击运行菜单项,运行->远程启动->选择要启动的slave的IP;如果需要全部启动,运行->远程全部启动即可。

注意事项

有几点需要注意:

1. 启动jmeter-server服务时,提示:

couldnot found

这个是开始没有找到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启动的线程数等于线程组中的配置,不是均分线程组中的配置。

参考文档

已有2条评论 发表评论

  1. ltwy /

    两台机器都需要开启jmeter服务么?如何开启服务?

    1. robin / 本文作者

      请看一下具体步骤。配置完成后需要保证可以telnet

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据