Jmeter 分布式测试

news2024/11/20 1:40:08

Jmeter单机进行压测,受到单台机器的性能影响,Jmeter支持分布式测试,用一个控制节点去控制多个工作节点去模拟更多的用户。

版本信息

内容版本号
JDK1.8
Jmeter5.6.2

分布式测试原理

jmeter 官网对分布式测试有说明,jmeter分布式测试官网介绍,工作原理,如下图所示
在这里插入图片描述

  1. 控制节点,该节点可以使用图形界面运行,可以直接使用 jmeter.bat运行,控制节点通过 RMI 通信,调用工作节点,发放执行脚本的命令,收集测试结果
  2. 工作节点,执行测试脚本命令,存储测试结果
  3. 目标服务器,需要压测的网站

分布式测试RMI 通信介绍

为了理解Jmeter 分布式测试调用的源码,写了一个样例工程,项目地址https://gitee.com/3281328128/jmeter-source-example, 下载项目之后,按照以下步骤配置

  1. 编译项目 mvn install,会发现工程下面产生了2个jar包,jmeter-rmi-server.jar, jmeter-rmi-client.jar
    在这里插入图片描述
  2. server.jar 模拟的是工作节点, client.jar 模拟的是控制节点。把server.jar 复制到其它工作节点,同级目录复制一份 jmeter.properties文件
    在这里插入图片描述
  3. 启动所有工作节点的jar包
java -jar jmeter-rmi-server.jar

在这里插入图片描述
ubuntu 运行报错
在这里插入图片描述
ubuntu 的需要加 -Djava.rmi.server.hostname=192.168.230.128,
hostname 填写对应的ip

java -Djava.rmi.server.hostname=192.168.230.128 -jar jmeter-rmi-server.jar
  1. 在 jmeter.properties 配置控制节点的 remote_hosts
    配置之前,先验证以下到对应的端口是否通的 telnet [ip] [端口]
    在这里插入图片描述
telnet 192.168.137.209 1099

如果网络通的,会显示登录成功,跳转到空白页面
在这里插入图片描述
配置信息如下:

remote_hosts=192.168.137.209,192.168.230.128
  1. 启动控制节点的jar包
java -jar jmeter-rmi-client.jar

运行日志如下

2024-01-28 19:38:20.337 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientMain[0;39m 加载配置文件路径 jmeter.properties
2024-01-28 19:38:20.352 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientMain[0;39m 配置远程服务地址 192.168.137.209,192.168.230.128
2024-01-28 19:38:20.353 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientMain[0;39m 当前测试计划ID d6855a1d-cd35-4a4f-9ff4-9cd696333757
2024-01-28 19:38:20.354 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.DistributedRunner[0;39m Configuring remote engine: 192.168.137.209
2024-01-28 19:38:20.781 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m 当前测试计划 TestPlan{id='d6855a1d-cd35-4a4f-9ff4-9cd696333757'}
2024-01-28 19:38:20.782 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.DistributedRunner[0;39m Configuring remote engine: 192.168.230.128
2024-01-28 19:38:20.844 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m 当前测试计划 TestPlan{id='d6855a1d-cd35-4a4f-9ff4-9cd696333757'}
2024-01-28 19:38:20.845 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m running clientengine run method
2024-01-28 19:38:20.895 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m sent test to 192.168.137.209 basedir=
2024-01-28 19:38:20.897 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m Sending properties {}
2024-01-28 19:38:20.972 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m sent run command to 192.168.137.209
2024-01-28 19:38:20.975 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m running clientengine run method
2024-01-28 19:38:20.984 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m sent test to 192.168.230.128 basedir=
2024-01-28 19:38:20.985 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m Sending properties {}
2024-01-28 19:38:21.010 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientJMeterEngine[0;39m sent run command to 192.168.230.128
2024-01-28 19:38:21.012 [34mINFO [0;39m [1;33m[main][0;39m  [36mc.s.j.r.c.ClientMain[0;39m 远程调用完成

Jmeter 配置分布式测试步骤

配置工作节点 Worker Nodes

  1. 配置SSL
    参考官方配置 https://jmeter.apache.org/usermanual/remote-test.html#setup_ssl
    如果不想配置SSL , 修改jmeter 的 ssl 配置,设置为 true
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true
  1. 启动工作节点
    windows 系统节点直接jmeter-server.bat 即可启动,Linux 系统需要使用命令行, hostname 填写机器IP
sh jmeter-server -Djava.rmi.server.hostname=192.168.230.128

配置控制节点

  1. 添加工作节点的IP到配置文件 jmeter.properties, 修该 remote_hosts、server.rmi.ssl.disable 配置项
# Remote Hosts - comma delimited
#remote_hosts=127.0.0.1
#remote_hosts=localhost:1099,localhost:2010
remote_hosts=192.168.137.209,192.168.230.128

# 禁用 ssl
# Set this if you don't want to use SSL for RMI
server.rmi.ssl.disable=true
  1. 启动 jmeter 图形界面, windows 直接点击 jmeter.bat
    在这里插入图片描述
    如果配置成功,可以在远程启动这里看到之前配置的 remote_hosts。

启动测试

在这里插入图片描述
工作节点查看日志 bin/jmeter-server.log

chengdu@ubuntu:~/jmeter/apache-jmeter-5.6.3/bin$ tail -f jmeter-server.log

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1417165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RabbitMQ 死信交换机的详述➕应用

🥳🥳Welcome 的Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于RabbitMQ的相关操作吧 目录 🥳🥳Welcome 的Huihuis Code World ! !🥳🥳 一.什么是死信交换机 二. 死信队列…

说说你对vue的mixin的理解,有什么应用场景

mixin是什么 Vue中的mixin 局部混入全局混入注意事项: 使用场景源码分析Vue 的几种类型的合并策略 替换型合并型队列性叠加型小结 此文章,来源于印客学院的资料,这里只是分享,便于查漏补缺。 mixin是什么 Mixin 是 面向对象程序设计语言中…

一文理清楚-Docker 容器如何工作

Docker 容器如何工作 集装箱什么是虚拟机?虚拟化如何运作?什么是容器?什么是 Docker?总结 五星上将麦克阿瑟曾经说过:在docker面前,虚拟机就是个弟弟 集装箱 《盒子:集装箱如何让世界变得更小&…

车载电子电器架构 —— 多核处理器刷写策略

车载电子电器架构 —— 多核处理器刷写策略 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消…

内存管理(mmu)/内存分配原理/多级页表

1.为什么要做内存管理? 随着进程对内存需求的扩大,和同时调度的进程增加,内存是比较瓶颈的资源,如何更好的高效的利于存储资源是一个重要问题。 这个内存管理的需求也是慢慢发展而来,早期总线上的master是直接使用物…

C++:STL - string

C&#xff1a;STL - string basic_stringstringstring的常见构造string的输入输出operator<<c_stroperator>>getline string访问及遍历operator[ ] & atfont & back迭代器begin & endrbegin & rend 范围for string的容量操作size & lengthmax_…

用甘特图有效管理多个项目进度

当公司或组织同时承担多个项目时,合理规划各项目的时间节点与资源分配对确保高效完成至关重要。采用甘特图可以直观地展示多个项目的时间进程、关键里程碑以及资源分配情况,便于从宏观层面全面把控各项目的动态。 在线甘特图软件 zz-plan.com 提供了非常强大的时间轴规划功能,支…

CSS 多色正方形上升

<template><view class="loop cubes"><view class="item cubes"></view> <!-- 方块1 --><view class="item cubes"></view> <!-- 方块2 --><view class="item cubes"></vie…

C# 将HTML网页、HTML字符串转换为PDF

将HTML转换为PDF可实现格式保留、可靠打印、文档归档等多种用途&#xff0c;满足不同领域和情境下的需求。本文将通过以下两个示例&#xff0c;演示如何使用第三方库Spire.PDF for .NET和QT插件在C# 中将Html 网页&#xff08;URL&#xff09;或HTML字符串转为PDF文件。 HTML转…

【C语言】深入理解指针(3)数组名与函数传参

目录 &#xff08;一&#xff09;数组名的理解 &#xff08;1&#xff09;数组名是数组首元素的地址 &#xff08;2&#xff09;两个例外 &#xff08;二&#xff09;函数内数组传参 &#xff08;1&#xff09;一维数组传参 &#xff08;2&#xff09;二维数组传参 &…

以太网交换基础VLAN原理与配置

目录 7.以太网交换基础 7.1.以太网协议 7.2.以太网帧介绍 7.3.以太网交换机 7.4.同网段数据通信全过程 8.VLAN原理与配置 8.1.VLAN的基本概念 8.2.VLAN的应用 7.以太网交换基础 7.1.以太网协议 以太网是当今现有局域网(Local Area Network,LAN)采用的最通用的通信协议…

git使用指南——以gitlab为例

注册gitlab 自行注册 新建项目 选择新建一个空白的项目 上传项目 clone项目地址到本地 执行完之后&#xff0c;会在目录下生成如下内容&#xff1a;进入里面&#xff0c;选择.git&#xff0c;要上传的内容&#xff08;资料或代码复制到该目录下&#xff09;&#xff1a;…

界面组件DevExpress .NET MAUI中文教程 - 如何优化手机屏幕空间?

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。 获取DevExpress v23.2正式版下载 Bottom Sheet是一个组件&#xff0c;它显示固定在屏幕底部的…

LeetCode:376.摆动序列

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;算法_仍有未知等待探索的博客-CSDN博客 题目链接&#xff1a;376. 摆动序列 - 力扣&#xff08;LeetCode&#xff09; 一、题目 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称…

【排序5】基数排序:数字的组织与整理艺术

&#x1f3a1;基数排序 &#x1f38a;1、基本思想&#x1f38a;2、基本步骤&#x1f38a;3、代码示例&#x1f38a;4、特性总结 &#x1f38a;1、基本思想 基数排序&#xff08;Radix Sort&#xff09;是一种非比较排序算法&#xff0c;它根据数字的每一位来对元素进行排序。它…

提示unzip :commad not found; 安装unzip教程

1.当使用unzip解压时 提示&#xff1a; unzip :commad not found; 2.安装命令 sudo yum install unzip 3.输入 y 确认 4.提示&#xff1a;完成 5.输入 unzip 文件名 解压-验证 6.完成

34.基于51单片机的智能停车位计时收费系统设计

一、系统功能介绍&#xff1a; 本设计基于 RFID智能识别和高速的视频图像和存储比较相结合&#xff0c;通过计算机的图像处理和自动识别&#xff0c;对车辆进出停车场的收费、车牌识别和车位诱导等&#xff0c;以实现停车场全方位智能管理。 本设计是以AT89C51 型单片机为主控芯…

Kubernetes (十七) 资源监控

一. 资源监控 二. metrics-server资源下载配置 官网:资源下载&#xff1a;http…

搭建Mybatis环境

1.导入依赖 pom.xml <dependencies> <!-- Mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency> <!-- Mysql依…

Tonka Finance 测试网活动,开启新铭文时代财富之门

Tonka Finance 是铭文赛道首个借贷市场&#xff0c;通过搭建一套铭文资产借贷质押方案&#xff0c;为铭文资产以借贷的形式释放价值、捕获流动性等方面提供了基础。作为铭文赛道最重要的基建设施之一&#xff0c;Tonka Finance 在面向市场后备受关注&#xff0c;并迅速作为铭文…