JMeter分布式压测

最近在做压测平台,调研了下jmeter分布式压测相关

既然是分布式压测,肯定是有多台机器参与,主要包括控制机器和压力机器,其实还有被压测服务所在的机器,但是暂时这里不需要做什么配置,如果是有其它需求比如监控服务机器CPU,内存资源情况,可能会部署一些agent

言归正传,下面就是简单地流程

UntitledImage

基于这种流程,下面做一下简单的测试

(1)首先是节点分布

Mac,作为控制节点,部署jmeter,编写脚本

虚拟机1,桥接模式,NAT应该也行,部署jmeter,压力机1

虚拟机2,桥接模式,部署jmeter,压力机2

两台虚拟机都是mac上面创建的,这样控制节点和压力机之间网络连通性没问题,同时jmeter的版本都保持一致

(2)节点配置

记录下两台压力机的IP地址,后面有用

NewImage

修改jmeter配置,上面两个压力机打开远程调用配置,去掉注释;下面控制节点指定所有压力机的host信息NewImage

这里两台压力机都要开放1099端口;如果这里不在配置文件里配置,也可以在jmeter启动参数里-R指定远程slave节点的host列表

(3)压测脚本

这里只是为了测试分布式压测,所以就弄了个a+b的Java Request脚本

NewImage

强制指定TPS=10来进行测试

NewImage

直接运行一下,可以看到聚合结果稳定10TPS

NewImage

这样脚本就完毕了

(4)分布式压测

上面是在本地压测,并不是分布式压测,所以只用到了控制节点MAC这一台机器,所以是10

要进行分布式压测,先启动压力机的jmeter-server进程,相当于是agent,具体命令./jmeter-server -Djava.rmi.server.hostname=xxxx;然后控制节点jmeter启动压测,需要添加-r选项,才表示是remote压测,具体参考下图

NewImage

可以看到压测脚本里设置的是10TPS压测,但是结果却是20TPS,原因就是用了两台压力机进行压测

(5)结果分析

结果解析命令:./jmeter -g my.jtl -e -o cases

打开cases目录下生成的html文件,所有的测试结果都在这里

NewImage

OVER

发表回复