Jmeter分布式测试
基本架构:
工作节点进行jmeter测试,控制节点发送相关的控制命令。
准备工作:
1)设置ssl
从JMeter 4.0开始,RMI的默认传输机制将使用SSL。SSL需要密钥和证书才能工作。
-
调用
$JMETER_HOME/bin/create-rmi-keystore.sh
。win环境下有bat后缀的同名文件。 -
这个脚本的流程如下:
$ ./create-rmi-keystore.sh What is your first and last name? [Unknown]: rmi What is the name of your organizational unit? [Unknown]: My unit name What is the name of your organization? [Unknown]: My organisation name What is the name of your City or Locality? [Unknown]: Your City What is the name of your State or Province? [Unknown]: Your State What is the two-letter country code for this unit? [Unknown]: XY Is CN=rmi, OU=My unit name, O=My organisation name, L=Your City, ST=Your State, C=XY correct? [no]: yes
-
调用结束后,会bin目录下生成一个:
rmi_keystore.jks
文件 -
将这个文件复制到所有节点,工作节点,控制节点。我这里有2个工作节点,1个控制节点,所以总共有3份。
节点之间的通讯,就是通过这个证书进行加密通讯的。
开始测试:
-
将jmeter安装到工作节点上,然后启动它
./jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
-
在控制节点上,配置jmeter.properties
remote_hosts=192.168.0.10,192.168.0.11,192.168.0.12,192.168.0.13,192.168.0.14
-
启动jmeter,添加测试计划,开始测试计划,如下图
最后查看结果,如下图。各个工作节点会把测试结果上报控制节点。
注意事项:
- 如果设置了数据文件,把文件复制到工作节点上对应的路径,这个路径在控制节点中定义了。如下图,箭头指定的路径就是要把文件复制到工作节点的目录。
-
在默认启动的情况下,如果工作节点的1099端口被占用了,修改
jmeter.properties
。大概在272行。
对应的控制节点,也要添加上这个端口。# RMI port to be used by the server (must start rmiregistry with same port) server_port=4000
-
如果出现如下报错,是没有设置SSL,请查看准备工作。
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is: java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory) An error occurred: Listen failed on port: 0; nested exception is: java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)