在项目中我们经常会有压测的需求,而小巧轻便且免费的JMeter也顺势成为了我们的主流压测工具。
JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做得比较成熟,因此,常被用作接口功能测试和性能测试。它能够很好的支持各种常见接口,如HTTP(S)、WebService、JDBC、FTP等、并以多种形式展示测试结果。
然而,在使用JMeter进行压测时,单机受限于内存,CPU,网络IO。我们发现当被测接口需要很高的并发量,或者有些接口访问数很高的时候,很容易就导致本地端口被占满,出现请求报错的情况。此时,本地的一些TCP配置、性能峰值就可能成为性能测试的瓶颈点。(服务器还没被压崩,本地已经崩了== )
因此,本文梳理了基于JMeter的分布式压测环境的搭建方法来解决这个问题,并能够满足参数化的需求。
1. Jmeter分布式执行原理
JMeter分布式执行时,选择其中一台作为调度机(master),其他机器作为执行机(slave);
master会在本地编辑好jmx压测脚本,执行时,master将jmx脚本发送至slave上,slaver执行时不需要启动jmeter,只需要把jmeter-sever.bat文件打开以非GUI形式执行;
slave执行完毕后将结果回传给master,并由master进行结果的汇总;
简单来说能达到的效果也就是:比如我在JMeter jmx脚本中设立的线程数是100,我在本地单机运行就会产生100次请求。如果