JMeter 分布式集群远程压测及搭建常见问题
1、JMeter可以在以下场景下使用分布式远程压测:
- 性能测试:JMeter可以模拟大量用户并发访问,进行性能测试。当需要模拟成千上万的用户请求时,单台机器可能无法承受如此大的负载,此时可以使用分布式远程压测来将测试负载分发到多台机器上,提高测试的效率和准确性。
- 稳定性测试:在一段时间内持续发送请求是稳定性测试中的一种场景。例如,可能需要持续压测几个小时甚至几天时间,查看接口是否有报错或者CPU、内存是否会上涨。通过分布式远程压测,可以在多台机器上分配压测任务,持续发送请求,提高稳定性测试的效果。
- 数据库操作:JMeter不仅可以作为接口自动化工具,还可以作为日常数据库操作的工具。当需要进行大量的数据库操作时,例如模拟用户在某一段时间内对数据库进行大量的读写操作,可以通过分布式远程压测来提高测试效率,减少测试执行时间。
2、JMeter分布式远程原理
1.JMeter 分布式测试,选择节点来做调度服务器,其他的节点作为执行节点,通过调度节点管理其他节点;
2.启动服务时,调度服务器会把脚本发送到各个执行节点(脚本会发送到执行节点,但是数据不会发送),执行节点拿到脚本开始执行命令;
3.各个执行节点执行结束以后将结果回传给调度节点,调度节点进行数据汇总;
4. 原理图
简单来讲: Jmeter分布式测试时,选择一台机器作为控制机,其他机器作为执行机。执行时,控制机会把脚本发到执行机上,执行机开始执行,执行完毕后,会把结果回传到控制机。
3、环境配置
1、我们使用Window做为压力机主机,Linux作为压力机从机,Win方便可视化执行
2、Jmeter在主机控制器上添加配置,打开bin/目录下的 jmeter.properties 文件
remote_hosts=192.168.124.129,192.168.124.130
server_port=1099
server.rmi.ssl.disable=true
3、编辑从机节点的 jmeter.properties 文件(两个从机节点都需要配置)
server_port=1099
server.rmi.ssl.disable=true
server.rmi.localport=1001
4、压力从机启动jmeter-server
注意:
1.如果你的Controller节点参与了请求,此时jmeter-server也需要启动;
2.执行的脚本进行文件参数化,此时需要存放在jmeter-server启动的相对位置路径,而不是你脚本存储的相对路径,首先执行的时候,Controller节点会对脚本下发,他会下发到jmeter-server启动的路径,而不是你脚本存放的路径
5、压机主机启动远程,分布式远程
Linux服务器显示如下:
6、非GUI启动远程机器
名词解释
- 启动指定Slave节点
启动命令:jmeter -n -t api.jmx -R 192.168.124.129
- 启动所有Slave节点(添加参数-r)
启动命令: jmeter -n -t api.jmx -r
常见问题FAQ
执行 sh jmeter-server报错:
原因为:
Jmeter远程启动该服务器报错:no such object in table
原因:
remote_hosts=192.168.124.129,192.168.124.130 (去掉端口即可,因为远程机的server.rmi.localport=1001 注释打开了,会默认取这里的端口)