当前位置: 首页 > news >正文

Jmeter 分布式测试

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

在这里插入图片描述

相关文章:

Jmeter 分布式测试

Jmeter单机进行压测,受到单台机器的性能影响,Jmeter支持分布式测试,用一个控制节点去控制多个工作节点去模拟更多的用户。 版本信息 内容版本号JDK1.8Jmeter5.6.2 分布式测试原理 jmeter 官网对分布式测试有说明,jmeter分布式…...

在 Ubuntu 上安装 Docker Engine

系列文章目录 前言 要在 Ubuntu 上开始使用 Docker Engine,请确保满足先决条件,然后按照安装步骤进行操作。 一、先决条件 注意事项 如果您使用 ufw 或 firewalld 管理防火墙设置,请注意当您使用 Docker 暴露容器端口时,这些端口…...

Mac安装nvm,安装多个不同版本node,指定node版本

一.安装nvm brew install nvm二。配置文件 touch ~/.zshrc echo export NVM_DIR~/.nvm >> ~/.zshrc echo source $(brew --prefix nvm)/nvm.sh >> ~/.zshrc三.查看安装版本 nvm -vnvm常用命令如下:nvm ls :列出所有已安装的 node 版本nvm…...

【开源】基于JAVA+Vue+SpringBoot的智慧家政系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…...

Python NLP深度学习进阶:自然语言处理

自然语言处理(Natural Language Processing,NLP)是人工智能领域中的一个重要分支,涉及到处理和理解人类语言的方法和技术。随着深度学习的快速发展,NLP的研究和应用也在不断进步。 在Python中,有许多强大的…...

STM32单片机基本原理与应用(三)

矩阵键盘工作原理 矩阵键盘由多个独立按键组成,按键的一端接地,一端接MCU的GPIO。当按键没有被按下时,电路其实是一个断路,将单片机该引脚设置成输入上拉状态,读到的电平为高电平。当按下按键时,引脚会被拉…...

Android studio布局详解

文章目录 一、Android studio布局详解二、Android studio六大布局案例三、优缺点四、热门文章 一、Android studio布局详解 Android Studio是一种用于开发Android应用程序的集成开发环境(IDE),用于设计和编辑Android应用程序的用户界面布局。在Android …...

第四篇:怎么写express的路由(接口+请求)

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 📘 引言: &#x1f4…...

算法学习记录:有关树的基础

前言: 算法学习记录不是算法介绍,本文记录的是从零开始的学习过程(见到的例题,代码的理解……),所有内容按学习顺序更新,而且不保证正确,如有错误,请帮助指出。 学习工具…...

2. 《大数据之路:阿里巴巴大数据实践》学习笔记,持续更新ing

笔记链接(飞书):https://t0s016els2a.feishu.cn/docx/JrNydGljUonH1ExcGCpcoC8unTb 密码:r661391 该书籍部分目录如下: 文章目录 第1篇 数据技术篇第2章 日志采集2.1 浏览器的页面日志采集2.1.1 页面浏览日志采集流程2.1.2 页面交互日志采集…...

编程笔记 html5cssjs 062 JavaScrip如何使用

编程笔记 html5&css&js 062 JavaScrip如何使用 一、 引入JavaScript二、DOM操作三、事件处理四、数据验证五、异步编程六、使用库和框架七、模块化开发小结 开始学习使用JavaScript进行前端开发的基本步骤和常见实践。 这里先列示基本的步骤和内容,后面慢慢…...

【前端基础--7】

DOM操作 DOM&#xff0c;全称(Document Object Model)&#xff0c;文档对象模型。 提供操作HTML的方法&#xff08;操作页面元素&#xff09; 获取节点 --- 操作元素标签 <body><div id"box">我是盒子标签</div><p class"text"&g…...

微信小程序如何搜索iBeacon设备

1.首先在utils文件夹下创建bluetooth.js和ibeacon.js 2.在 bluetooth.js文件中写入 module.exports {initBluetooth: function () {// 初始化蓝牙模块wx.openBluetoothAdapter({success: function (res) {console.log(蓝牙模块初始化成功);},fail: function (res) {console.l…...

JVM篇:垃圾回收算法

标记清除 通过遍历GC Root后得到不再被引用的对象&#xff0c;对没被引用的对象做一个标记处理&#xff0c;然后对其进行清除。 优点&#xff1a;速度快 缺点&#xff1a;会产生内存碎片&#xff0c;可能会导致空闲的内存足够保存对象&#xff0c;但由于不连续而保存失败。 标…...

2024年数学建模美赛 分析与编程

2024年数学建模美赛 分析与编程 1、本专栏将在2024年美赛题目公布后&#xff0c;进行深入分析&#xff0c;建议收藏&#xff1b; 2、本专栏对2023年赛题&#xff0c;其它题目分析详见专题讨论&#xff1b; 2023年数学建模美赛A题&#xff08;A drought stricken plant communi…...

05-Nacos-配置中心接入

1、pom依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency> 2、配置文件 spring:application:name: nacos-config## 当前环境&#xff0c;这个和…...

服务端开发小记02——Maven

这里写目录标题 Maven简介Maven在Linux下的安装Maven常用命令 Maven简介 Apache Maven Project是一个apache的开源项目&#xff0c;是用于构建和管理Java项目的工具包。 用Maven可以方便地创建项目&#xff0c;基于archetype可以创建多种类型的java项目&#xff1b;Maven仓库…...

DjangoURL调度器(一)

一、介绍 当一个用户请求 Django 站点的一个页面&#xff0c;下面是 Django 系统决定执行哪个 Python 代码使用的算法&#xff1a; Django确定要使用的根URLconf模块&#xff0c;一般是在settings中的ROOT_URLCONF设置的值&#xff0c;但是如果传入 HttpRequest 对象具有一个ur…...

Typora 无法导出 pdf 问题的解决

目录 问题描述 解决困难 解决方法 问题描述 我的 Windows 下&#xff0c;以前&#xff08;Windows 11&#xff09; Typora 可以顺利较快地由 .md 导出 .pdf 文件&#xff0c;此功能当然非常实用与重要。 然而&#xff0c;有一次电脑因故重装了系统&#xff08;刷机&#x…...

uniapp封装公共的方法或者数据请求方法

仅供自己参考&#xff0c;不是每个页面都用到这个方法&#xff0c;所以我直接在用到的页面引用该公用方法&#xff1a; 1、新建一个util.js文件 export const address function(options){return new Promise((resolve,reject)>{uni.request({url:"https://x.cxniu.…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...