本文主要是根据官方教程编写。地址:Jmeter分布式压测
本文搭建架构,直接拿来官网的图。注意下面说的服务端是指Slave,客户端是指Master。
在搭建之前务必满足如下要求:
1)系统上的防火墙已关闭或打开了正确的端口(直接关闭省事儿)。
2)所有客户端都在同一子网中。
3)如果使用192.x.x.x或10.x.x.x IP地址,则服务器位于同一子网中。 其实如果服务器不使用192.xx或10.xx IP地址,应该没有任何问题。
4)确保JMeter可以访问服务器。
5)确保在所有系统上使用相同版本的JMeter和Java。混用版本将无法正常工作。
6)已经为RMI设置了SSL或将其禁用。(设置SSL方法见文末,官方教程见设置SSL)
7)安装JDK。我是JDK8
搭建步骤
1、开启服务端。(两台Slave机器上)
./jmeter/bin/jmeter-server
2、编辑配置文件。(在Master机器上)
vi jmeter/bin/jmeter.properties
找到remote_hosts=127.0.0.1
添加自己的Slave机器Ip,例如:remote_hosts=192.168.1.1,192.168.1.2
3、开启客户端。(在Master机器上)
sh jmeter/bin/jmeter.sh
4、导入自己的jmx测试模板进行测试,顶层的Run目录下可以选择使用几台Slave压测
设置SSL
其实就是对要连接的所有JMeter服务端和客户端使用一对密钥/证书。 而JMeter附带了一个脚本,用于生成后缀为.rmi的密钥(及其对应的证书)的密钥库。设置方法如下
1、生产秘钥(在其中一个服务端),执行如下命令并按照提示随便填写。
bin/create-rmi-keystore.sh
2、将产生的bin/rmi_keystore.jks文件拷贝到所有服务端和客户端的jmeter/bin目录下
注意点
1、RMI配置了,Master就是连不上Slave
检测所有机器是否都在同一个子网内
2、细心观察会发现,从客户端压测的时候返回结果有值,如果控制Slave进行压测,虽然提示OK,但是返回结果为空。
从2.9版开始,JMeter将剥离响应数据的所有测试结果发送到控制台。所以说,这是正常的。