JMeter 分布式压测

JMeter 分布式压测是指使用多台机器协同工作,对被测系统进行大规模的并发测试。这种方案可以有效提高测试效率和覆盖面,并能够更好地模拟真实用户场景。JMeter 分布式压测需要一个 Master 节点来控制整个测试过程,以及多个 Slave 节点来执行真正的压测任务。

下面是使用 JMeter 进行分布式压测的基本步骤:

1. 在 JMeter 主节点和从节点上,安装 Java 和 JMeter(配置环境变量),并确保版本相同。

2. 在 JMeter 主节点上,修改 jmeter.properties 文件。

  将 remote_hosts 修改为从节点的 IP 地址(10.16.28.45),多个 IP 地址之间用逗号隔开。例如:

remote_hosts=10.16.28.45

  将server.rmi.ssl.disable的值从false改为true,并去掉注释。

server.rmi.ssl.disable=true

3. 在 JMeter 从节点上,修改 jmeter.properties 文件。

  将server.rmi.ssl.disable的值从false改为true,并去掉注释。

server.rmi.ssl.disable=true

4. 在每个从节点上启动JMeter服务

  使用终端窗口导航到JMeter的bin目录,并执行以下命令以启动JMeter服务:

./jmeter-server -Djava.rmi.server.hostname=10.16.28.45

  这将启动从节点JMeter服务并等待来自主控机的远程连接。

5. 主节点启动测试

jmeter -n -t script/XX.jmx -l result/XX.jtl -r >>resulttmp.txt
# -n 表示non gui mode 非图形化模式
# -t testplan 后跟要运行的jmeter脚本路径和脚本名称
# -l 指定生成测试结果的保存文件,jtl 文件格式
# -r 代表启动所有的slave机器
# -R 指定某些slave机器参与测试,多个slave机器参与测试时IP中间用逗号分隔。-R 10.16.28.45代表从节点10.16.28.45参与压测

6. 查看测试结果:在 Master 节点上,可以通过查看 Summary Report 或者 Aggregate Report 等 Listener 来获得整个测试过程中的各项指标,如响应时间、吞吐量等。

  需要注意的是,在 JMeter 分布式压测过程中,要确保主节点和从节点之间网络连接畅通,并且测试计划中所有的资源(例如 CSV 文件、图片等)都能够被从节点访问到。此外,也需要根据场景需要,合理地调节线程数、Ramp-up 时间等参数,以便更好地模拟真实用户场景。

  在JMeter分布式压测中,主节点不会参与实际的压测任务。主节点只负责控制整个测试过程和收集从节点的结果数据。因此,即使主节点没有配置为从节点,它也可以正常地运行并控制其他从节点执行压测任务。然而,如果主节点不是一台强大的机器,或者其网络带宽较小,可能会影响分布式压测的效果。因此,在选择主节点时,应考虑到其硬件配置和性能,以确保能够正常支持测试过程。

  总之,JMeter 分布式压测是一种高效、可扩展的性能测试方案,可以极大地提高测试效率和覆盖面。如果你需要对系统进行大规模并发测试,那么使用 JMeter 分布式压测可能会是一个不错的选择。


问题记录:从节点上使用jmeter-server启动JMeter服务存在报错:

[root@cwcsb-gxcwy832-xnce-2 bin]# ./jmeter-server
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[127.0.0.1:46793](local),objID:[-3a0d6878:188d801b18c:-7fff, 4070195176839812321]]]
Server failed to start: java.rmi.RemoteException: Cannot start. cwcsb-gxcwy832-xnce-2 is a loopback address.
An error occurred: Cannot start. cwcsb-gxcwy832-xnce-2 is a loopback address.

解决方法:启动jmeter-server,指定本地IP,执行以下命令即可成功启动

[root@cwcsb-gxcwy832-xnce-2 bin]# ./jmeter-server -Djava.rmi.server.hostname=10.16.28.45
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[10.16.28.45:37586](local),objID:[16773c3e:188dcdb8c0d:-7fff, -3341504594847185951]]]

启动测试:主节点启动测试,从节点响应测试启动:

[root@cwcsb-gxcwy832-xnce-2 bin]# ./jmeter-server -Djava.rmi.server.hostname=10.16.28.45
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[10.16.28.45:37586](local),objID:[16773c3e:188dcdb8c0d:-7fff, -3341504594847185951]]]
Starting the test on host 10.16.28.45 @ Wed Jun 21 15:29:43 CST 2023 (1687332583692)
Finished the test on host 10.16.28.45 @ Wed Jun 21 15:31:24 CST 2023 (1687332684876)

 

posted @ 2023-06-20 19:24  查拉图斯特拉面条  阅读(717)  评论(0编辑  收藏  举报