Jmeter压测环境准备
Jmeter性能监控
- 配置好测试机器上的jmeter环境:http://jmeter-plugins.org/downloads/all/ 网站下载两个东西: JMeterPlugins-Standard-1.1.3.zip、 ServerAgent-2.2.1.zip
- Standard的zip包解压缩之后,将JMeterPlugins- Standard.jar 放在XXX\Apache\jmeter\lib\ext下,重启jmeter就可以看到在 线程组右键的监听器中可以看到增加了很多内容,在现有的项目中增加jp@gc - PerfMon Metrics Collector,作为监控服务器端的数据。
- 增加了jp@gc - PerfMon Metrics Collector之后,在其中Add Row,增加需要监控的数据信息,比如Cpu,Memory,Disks/IO,TCP等之类的信息,端口默认为4444。
- 服务器端配置,解压缩ServerAgent.zip包,放到服务器上:
- Linux:CD命令到该文件夹下,输入命令./XXXXXX /startAgent.sh。注意,如果客户端配置的不是4444端口,则需要启动客户端设置的端口,命令为./startAgent.sh --udp-port 0 --tcp-port Xxxx,当然Xxxx为设定好的端口号。
- Windows:,双击startAgent.bat即可,启动的是默认端口4444.
5. 在测试机器上,点击启动就可以开始接口的测试和压力测试工作了,在选择的jp@gc - PerfMon Metrics Collector可以看到来自服务器的性能信息。
Jmeter分布式部署
使用多台机器产生负载的操作步骤如下:
- 在所有期望运行jmeter作为 负载生成器的机器上安装jmeter, 并确定其中一台机器作为 controller ,其他的的机器作为agent 。
- 在controller机器的jmeter的%JMeter_home%/bin目录下,找到jmeter.properties 文件,编辑该文件:
查找:remote_hosts=127.0.0.1,修改为:remote_hosts=10.8.39.114:1099,10.8.33.181:1099,localhost:1099
这里要特别注意端口后,有些资料说明端口1644为jmeter的controller 和agent 之间进行通信的默认RMI端口号,但是在测试时发现,设置为1644运行不成功,改成1099后运行通过。另外还要留意agent的机子是否开启了防火墙等。
3. 运行所有 agent 机器上的jmeter-server 文件
4. 启动controller 机子上的jmeter应用jmeter.bat,选择菜单“Run”--->“Remote Start”(“运行”--->“远程启动”),来分别启动agent ,也可以直接选择“Remote Start All”(“远程全部启动”)来将所有的agent启动。当
远程访问时,会看到控制台上打印出一行:Starting the test on host [ip]:1099 @....,远程执行结束,会打印一行:Finished the test on host [ip]:1099 @...。
需要注意的点:
1)Jmeter分布式控制过程中,各个Agent启动的线程数等于线程组中的配置,不是均分线程组中的配置,每个Agent所单独测试的线程数都是你在Controller上配置的线程数,也就是说我在controller上的线程数为100,立即
执行,循环一次,那么我的部署就会有同事触发300(100X3)的线程数,立即执行,执行一次。而不是三台机器共同分担100个线程。
2)在contrller机器上想要运行agent的时候,需要先执行jmeter-server 文件,再执行jmeter.bat
3)配置的时候保证机器的防火墙都处于关闭状态。
参考资料:
性能监控插件:
http://www.tuicool.com/articles/RbAN3ea
性能监控介绍:
http://blog.csdn.net/defonds/article/details/41650813