官方教程Jmeter分布式远程测试
1.概述
这篇文章通过阅读官方手册配置Jmeter分布式测试环境,同时对官方的教程进行扩展介绍一些配置分布式测试环境其他方式。
2.Jmeter官方远程测试
2.1.阅读官方手册
1.查看官方手册目录
通过查看官方手册目录,找到远程测试的章节进行阅读。 https://jmeter.apache.org/usermanual/index.html
2.阅读远程测试章节
打开官方手册远程测试章节后,发现远程测试的配置非常简单,下面就来看下原文和译文吧。
- 第0步:开始配置前需要确认控制机和执行机的三件事情
- 第1步:所有执行机器启动Jmeter服务
- 第2步:在控制机配置文件中添加执行机IP地址
- 第3步:启动Jmeter测试
- 控制机启动远程测试时,执行机本地不需要测试脚本,控制机有一份脚本即可,他会在调用执行机时将脚本内容共享给执行机。
- 控制机远程启动测试有两个方式,windows通过界面启动和Linux环境通过命令方式启动。
windows环境界面启动远程测试 Linux命令远程启动测试
2.2.跟着官方手册配置远程测试
1.名词统一
控制机:master端,调用远程控制node端发起压力。 执行机:node端,发压机产生负载的机器。
2.控制机关闭ssl
在控制机上编辑jmeter.properties配置文件,找到server.rmi.ssl.disable属性将它的注释去掉,将值改成true
server.rmi.ssl.disable=true
3.控制机添加执行机IP地址
在控制机上编辑jmeter.properties配置文件,找到remote_hosts属性,将执行机IP地址填上,多个执行机IP地址用逗号分隔。
remote_hosts=172.16.8.222
4.执行机关闭ssl
在所有的执行机上编辑jmeter.properties配置文件,找到server.rmi.ssl.disable属性将它的注释去掉,将值改成true
server.rmi.ssl.disable=true
5.Linux环境开始远程测试
- 所有的执行机都在jmeter/bin目录下执行./jmeter-server命令启动服务。出现下面的提示表示执行端启动成功。
[root@AgileTC bin]
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[172.16.8.222:33656](local),objID:[1842c35d:17db3059440:-7fff, -2691241846961766586]]]
Starting the test on host 172.16.8.222 @ Mon Dec 13 17:08:01 CST 2021 (1639386481120)
- 控制机调用执行机发起远程测试
在控制机上执行测试命令
jmeter -n -t ./JmeterScript/LiveStreaming.jmx -r
-n:命令模式启动
-t:脚本名称
-r:调用所有执行机
6.官方远程测试总结
- 官方提供的远程测试操作方法是最简单的,配置步骤最少的。
- 官方配置的远程测试控制机和执行机通信使用默认的端口号1099,因此在控制机添加执行机时只写IP地址,不需要写端口号。
- 官方默认端口号是在jmeter/bin目录下 jmeter-server文件中。
${DIRNAME}/jmeter ${RMI_HOST_DEF} -Dserver_port=${SERVER_PORT:-1099} -s -j jmeter-server.log "$@"
3.远程测试扩展
3.1.修改远程测试端口号
当默认的1099端口号被占用时,我们可以通过修改端口号解决。 端口号定义的位置有两个文件可以配置
- jmeter.properties和jmeter-server
- jmeter.properties配置的端口号会覆盖jmeter-server文件配置的端口号
- 如果修改端口号,在控制机添加执行机IP地址时就需要带上执行机配置的端口号。
3.2.修改端口号例子
1.执行机修改端口号
- jmeter.properties配置文件中端口号默认是注释的,因此会先读取jmeter-server文件中的端口号。
- 当我们打开jmeter.properties配置文件中端口号就会覆盖jmeter-server文件中的端口号。
- 编辑执行机上jmeter.properties配置文件中端口号
remote_hosts=127.0.0.1
server_port=2099
2.控制机修改执行机IP地址+端口号
在控制机上编辑jmeter.properties配置文件,添加执行机IP地址和端口号
remote_hosts=172.16.8.222:2099
3.3.调整执行机JVM
使用远程测试,执行机jvm默认值较低,可能会出现堆内存溢出。通过jmeter/bin目录下的jmeter文件配置jvm参数。
vim jmeter
: "${HEAP:="-Xms5g -Xmx5g -XX:MaxMetaspaceSize=1g"}"
: "${JMETER_LANGUAGE:="-Duser.language=en -Duser.region=EN"}"
3.4.设置执行机日志级别
执行机如果日志量非常大的情况也会导致一些问题,因此我们需要将日志级别调整为warn或者error级别。 打开jmeter/bin目录下的log4j2.xml文件调整日志级别
vim log4j2.xml
<!-- 设置日志级别为warn-->
<Root level="warn">
<AppenderRef ref="jmeter-log" />
<AppenderRef ref="gui-log-event" />
</Root>
3.5.配置控制机是否参与负载
在控制机添加执行机时,如果不添加控制机的地址那么控制机只做调度不产生负载,如果需要控制机也产生复杂那就添加上控制机地址。
1.控制机不作为负载机
在控制机的jmeter.properties文件中只添加执行机IP地址
remote_hosts=172.16.8.222
2.控制机作为负载机
在控制机的jmeter.properties文件中添加本机127.0.0.1 IP地址,作为负载机。
remote_hosts=127.0.0.1,172.16.8.222
|