jmeter(二十三)分布式测试

jmeter用了一年多,也断断续续写了一些相关的博客,忽然发现没有写过度布式测试的一些东西,这篇博客就介绍下利用jmeter作分布式测试的一些技术点吧,权当参考。。。html

关于jmeter的介绍和元件做用,以前的博客介绍过,不少其余同行的博客也够详细的,这里不作介绍,对jmeter不甚了解的能够参考以前的博客:jmeter:菜鸟入门到进阶系列git

jmeter官方文档:用户手册github

jmeter源码:Apache JMeterapache

 

1、为何要使用分布式测试服务器

按照通常的压力机配置,jmeter的GUI模式下(Windows),最多支持300左右的模拟请求线程,再大的话,容易形成卡顿、无响应等状况,这是限于jmeter其自己的机制和硬件配置。并发

有时候为了尽可能模拟业务场景,须要模拟大量的并发请求,这个时候单台压力机就显得有心无力。针对这个状况,jmeter的解决方案是支持分布式压测,即将大量的模拟并发分配给分布式

多台压力机,来知足这种大流量的并发请求场景。测试

 

2、分布式压测的原理spa

一、分布式测试中,选择一台做为管理机(Contorller),其余的机器做为测试执行的代理机(Agent);插件

二、执行测试时,由Contorller经过命令行将测试脚本发给Agent,而后Agent执行测试(不须要启动GUI),同时将测试结果发送给Contorller;

三、测试完成,能够在Contorller上的监听器里面看到Agent发来的测试结果,结果为多个Agent测试结果汇总而成;

 

3、分布式设置步骤

一、修改Contorller配置

打开Contorller机下jmeter安装文件下的bin目录:jmeter.properties文件,搜索remote_hosts=127.0.0.1,将Agent机的IP和端口写在后面,好比:

 remote_hosts=127.0.0.1,127.0.0.2:80,127.0.0.3:80 

其中127.0.0.2和127.0.0.3为Agent机的IP,每一个Agent机之间用英文半角逗号隔开,修改保存。

二、启动jemter

启动jmeter后,设置线程组、配置元件、取样器、监听器等原件,点击“运行-远程启动”:

能够选择远程启动一个Agent机,或者选择远程所有启动,这样,就能够进行分布式测试了。

PS:上面的例子中,127.0.0.2和127.0.0.3为举例说明,具体实践请修改成对应的Agent机IP以及端口。

 

4、注意事项

一、保持Contorller和Agent机器的JDK、jmeter以及插件等配置版本一致;

二、若是测试数据有用到CSV或者其余方式进行参数化,须要将data pools在每台Agent上复制一份,且读取路径必须保持一致;

三、确保Contorller和Agent机器在同一个子网里面;

四、检查防火墙是否被关闭,端口是否被占用(防火墙会影响脚本执行和测试结构收集,端口占用会致使Agent机报错);

五、分布式测试中,经过远程启动代理服务器,默认查看结果树中的响应数据为空,只有错误信息会被报回;

六、若是并发较高,建议将Contorller机设置为只启动测试脚本和收集汇总测试结果,在配置文件里去掉Contorller机的IP;

七、分布式测试中,若是1S启动100个模拟请求,有5个Agent机,那么须要将脚本的线程数设置为20,不然模拟请求数会变成500,和预期结果相差太大。

相关文章
相关标签/搜索