JMeter 入门之远程启动,服务模式,多机联测,负载均衡测试

news2024/11/7 19:30:57

本文主要介绍 JMeter 远程启动及使用多节点完成大并发测试(负载均衡测试),主打一个压力山大,借用 黑神话:悟空 的技能来描述就是远程开大,释放猴子猴孙技能。

搜了一些 jmeter 的案例或教程,讲的乱七八糟,图不对文,词不达意,配置混乱,其实很简单,不需要那么繁琐,跟着我的思路来就行了,亲自实操验证过的,绝不是勾兑的(如果对大家有帮助,欢迎冠珠,收藏,点赞)。

JMeter 支持以 Server 模式启动,也可以认为是一个等待任务派发的 Agent ,我们还拿 黑神话:悟空 举例,悟空真身是一个 Controller 控制节点(本身也可以作为 Agent),每个猴子猴孙相当于一个 Agent, 悟空真身 Controller 可以让 1 个或多个猴子猴孙进行攻击(单个执行或批量执行)。

默认你的环境已经安装好 JDK 了,也下载好 jmeter 安装包了,这部分不讲了。

服务模式启动

这里的远程启动就是指 server 模式启动,无论是 windows 还是 linux 都可以以 server 模式启动,server 模式启动还是比较简单的,我们还以 windows 为例(后面会演示 linux)

修改 bin 目录下的 jmeter.properties 文件的 ssl.disable 一项为:true, 其余部分省略

....
# Set this if you don't want to use SSL for RMI
#server.rmi.ssl.disable=false
server.rmi.ssl.disable=true
....

默认情况下,直接启动,就会得到一个只有本机节点的 agent

在 bin 目录下,直接双击 jmeter-server.bat 即可启动,或者 打开 powershell 或者 cmd 命令行窗口,执行

# 在 bin 目录下直接执行
./jmeter-server.bat

得到如下界面即表示启动成功

本地 GUI 调用

服务模式启动成功后,可以直接再双击打开 jmeter.bat 启动 GUI 界面,依次 Run - Remote Start - 127.0.0.1 即可执行测试计划

cmd 窗口会收到开始执行的日志输出,这时就表示是使用 server 模式执行的

本地命令行调用

如果不想打开 GUI 界面,也可以直接命令行执行,也很简单,使用你通过 GUI 保存的测试计划文件即可

./jmeter.bat -n -R 127.0.0.1 -t examples/test.jmx

参数说明:

  • -n, 表示 no gui, 不使用界面
  • -R, 指定远程主机,这里本机起的只有一个 127.0.0.1, 并且测试下来 -R 与 127.0.0.1 之间要有一个空格
  • -t, 指定要使用的测试计划

下面打印出来的内容就是表示使用了哪几个远程主机,性能概要输出,比如我上面的输出就是 总共 请求了 10 次,用时 1 秒,每秒执行了 10.2 次,平均响应时长 43 ms, 最小响应时长 36 ms, 最大响应时长 53 ms,错误 0 个,错误率 0.00%

下面我们来实践 linux 启动 服务模式

Linux 启动

我们所说的 linux 一般是无界面的,所以一般是直接命令行执行了,比如可以直接执行 jmeter 命令进行单机测试

./jmeter -n -t examples/test.jmx

我上面的示例就直接以 standalone 形式启动测试。

Linux 服务模式

linux 服务模式启动其实和 windows 一样,但是我们一般是采用多机负载的形式,所以需要设置一个端口,设置方式很简单,直接更改 bin 目录下的 jmeter.properties 文件如下 3 个地方的内容(其他内容未更改,省略未展示):

...
# RMI port to be used by the server (must start rmiregistry with same port)
#server_port=1099
server_port=10000
...
# To use a specific port for the JMeter server engine, define
# the following property before starting the server:
#server.rmi.localport=4000
server.rmi.localport=10000
...
#server.rmi.ssl.disable=false
server.rmi.ssl.disable=true
...

使用 10000 端口用来启动

# 在 bin 目录下直接执行
./jmeter-server

Using local port: 10000
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[10.70.200.66:10000](local),objID:[59a72b36:191e105eec6:-7fff, -5825468673534152766]]]

新开终端窗口,执行 netstat 可以查看当前 10000 端口已打开

Linux 远程测试

使用当前机器,或者另外一台机器都可以进行测试,我们以另一台机器为例吧,比较贴近实战

首先要更改 bin/jmeter.properties 配置中的 ssl.disable 为:true, 不然执行会报错(java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory))

...
#server.rmi.ssl.disable=false
server.rmi.ssl.disable=true
...

准备好 test.jmx 测试计划文件即可,远程机不需要放置 jmx 文件,很多教程说远程机也需要,其实是错误的,哪个脑残会这样设计

./jmeter -n -R10.70.200.66:10000 -t examples/test.jmx

使用 -R 参数,这里可以不加空格也可以,windows 比较脑残,使用 -R 参数也不需要 jmeter.properties 文件中指定 remote_hosts ,因为 -R 已经指定了

如果需要指定多台执行,可以逗号隔开多台,如:

./jmeter -n -R10.70.200.66:10000,10.70.200.129:10000 -t examples/test.jmx

但是,如果不想使用 -R,想使用 -r (全部执行),这时可以配置 remote_hosts, 不然只有一个 127.0.0.1

这里配置一下,仅对 -r 参数有用

直接执行

./jmeter -n -r -t examples/test.jmx

性能优化

主要就是 Java 相关的优化,比如 HEAP 设置,可以通过设置环境变量的形式实现,比如

export HEAP="-Xms8g -Xmx8g -XX:MaxMetaspaceSize=512m"
./jmeter-server

在新窗口查看,其中有 -Xms8g -Xmx8g -XX:MaxMetaspaceSize=512m

ps -ef | grep jmeter

root     3391984 3391962 22 20:19 pts/0    00:06:12 /usr/local/kona-11/bin/java --add-opens java.desktop/sun.awt=ALL-UNNAMED --add-opens java.desktop/sun.swing=ALL-UNNAMED --add-opens java.desktop/javax.swing.text.html=ALL-UNNAMED --add-opens java.desktop/java.awt=ALL-UNNAMED --add-opens java.desktop/java.awt.font=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED -server -XX:+HeapDumpOnOutOfMemoryError -Xms8g -Xmx8g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20 -Djava.security.egd=file:/dev/urandom -Duser.language=en -Duser.region=EN -jar ./ApacheJMeter.jar -Dserver_port=1099 -s -j jmeter-server.log

更多环境变量通过查看 jmeter 文件开头部分就可以看到。

cat jmeter

...
##   ==============================================
##   Environment variables:
##   JVM_ARGS - optional java args, e.g. -Dprop=val
##
##   e.g.
##   JVM_ARGS="-Xms1g -Xmx1g" jmeter etc.
##
##   Do not set the variables in this script. Instead put them into a script
##   setenv.sh in JMETER_HOME/bin to keep your customizations separate.
##
##   JAVA_HOME        Must point at your Java Development Kit installation.
##                    Required to run the with the "debug" argument.
##
##   JRE_HOME         Must point at your Java Runtime installation.
##                    Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
##                    are both empty, JMeter will try to guess JAVA_HOME.
##                    If JRE_HOME and JAVA_HOME are both set, JAVA_HOME is used.
##
##   GC_ALGO          (Optional) Java runtime options to specify JVM garbage collection
##                    algorithm
##                    Defaults to "-XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20"
##
##   HEAP             (Optional) Java runtime options for memory management
##                    used when JMeter is started.
##                    Defaults to "-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"
##
##   JMETER_HOME      (Optional) May point to your JMeter install dir. If empty
##                    it will be set relativ to this script.
##
##   JMETER_LANGUAGE  (Optional) Java runtime options to specify used language
##                    Defaults to "-Duser.language=en -Duser.region=EN"
##
##   JMETER_OPTS      (Optional) Java runtime options used when JMeter is started.
##                    Special options for operating systems might be added by JMeter.
##
##   ==============================================
...

踩坑记录

作为新手,新学一个东西,在网上搜了搜,免不了要踩坑,因为很多博主写的内容都过期了,或者压根自己也没细探究,不知道从哪搬运的,不够负责,下面简单分享一下踩了哪些坑(有些可能不算,只能算弯路吧)

1,被一些堆字数的文章绕晕了,我只想跑起一个简单的测试,看一堆无用的介绍

2,还没开始,被一些博主所谓的前置条件给牵制了,一堆必须满足这条件,那条件的

3,词不达意,图不对文,驴嘴不对马脸,看着头大

4,有些太简单,看了等于没看,有些太复杂,看了等于没看

5,没有遵循最小化,实操性进行撰写博文

6,服务模式启动 /etc/hosts 不能配置 主机名指向 127.0.0.1 会报错

7,需要禁用 ssl, 即 ssl.disable=true

8,remote_hosts 只在 -r 参数有用,可以使用 -R 精确指定

9,只需要配置 server_port, server.rmi.localport, server.rmi.ssl.disable 其他不用动

10,开启端口,注意关闭防火墙或放开端口

关于我

我是祥子,不拉车的祥子,专注技术和工具的分享,擅长云原生,SRE等,也正在探索新媒体和 AI 相关的内容,记录生活,分享生活,提升自己,帮助别人,如果文章对您有帮助,也欢迎您的点赞,转发,点亮在看,感谢您的鼓励与支持!

如果需要找到我,可以通过下方的照骗就可以找到!

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

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

相关文章

Windows10 如何设置电脑ip

1、首先打开控制面板 或者使用WinR 输入control 找到网络和Internet 点击网络和共享中心 点击更改适配器设置 找到你要需要设置的网络,右键 如果你的网口特别多,不确定是哪一个,拔插一下看看哪个以太网的标志是断开状态就可以了 点击属性…

★ C++基础篇 ★ string类的实现

Ciallo&#xff5e;(∠・ω< )⌒☆ ~ 今天&#xff0c;我将继续和大家一起学习C基础篇第五章下篇----string类的模拟实现 ~ 上篇&#xff1a;★ C基础篇 ★ string类-CSDN博客 C基础篇专栏&#xff1a;★ C基础篇 ★_椎名澄嵐的博客-CSDN博客 目录 一 基础结构 二 迭代器 …

即插即用篇 | YOLOv8 引入组装式Transformer模块AssembleFormer | arXiv 2024

本改进已同步到YOLO-Magic框架! 摘要—早期检测和准确诊断可以预测恶性疾病转化的风险,从而增加有效治疗的可能性。轻微的症状和小范围的感染区域是一种不祥的警告,是疾病早期诊断的重中之重。深度学习算法,如卷积神经网络(CNNs),已被用于分割自然或医学对象,显示出有希…

JVM源码解析

一、java虚拟机概述 1. java程序的跨平台性 之前的话&#xff0c;通过Linux或者Windows开发&#xff0c;当需要跨平台时&#xff0c;程序不能运行。java出现后&#xff0c;产生了jvm&#xff0c;针对不同的操作系统&#xff0c;产生了不同的java虚拟机。 在Java虚拟机中执行…

3D云渲染农场为何怎么贵?主要消耗成本介绍

随着对高质量3D动画的需求持续增长&#xff0c;云渲染农场对于旨在以高效速度生产高质量视觉效果的工作室来说变得至关重要。然而&#xff0c;用户经常想知道为什么渲染农场的价格如此之高&#xff0c;理解背后的原因可以帮助艺术家做出更好的选择。 什么是云渲染农场&#xff…

【Hot100】LeetCode—72. 编辑距离

目录 1- 思路题目识别动规五部曲 2- 实现⭐72. 编辑距离——题解思路 3- ACM 实现 原题链接&#xff1a;72. 编辑距离 1- 思路 题目识别 识别1 &#xff1a;两个字符串之间相互转换&#xff0c;增、删、替换 最少的操作次数 动规五部曲 1- 定义 dp 数组 dp[i][j] 代表&…

市面上有哪些高效财税自动化软件

随着科技的不断发展&#xff0c;财税自动化软件已成为许多企业和个人不可或缺的工具。这些软件可以大大提高财税处理的效率&#xff0c;减少人工错误&#xff0c;并确保合规性。目前市场上有许多高效财税自动化软件可供选择&#xff0c;本文金智维将介绍一些市场上比较受欢迎的…

可信的人类与人工智能协作:基于人类反馈和物理知识的安全自主驾驶强化学习

可信的人类与人工智能协作&#xff1a;基于人类反馈和物理知识的安全自主驾驶强化学习 Abstract 在自动驾驶领域&#xff0c;开发安全且可信赖的自动驾驶策略仍然是一项重大挑战。近年来&#xff0c;结合人类反馈的强化学习&#xff08;RLHF&#xff09;因其提升训练安全性和…

【EI会议征稿通知】第五届机械、电子电气与自动化控制国际学术会议(METMS 2025)

第五届机械、电子电气与自动化控制国际学术会议&#xff08;METMS 2025&#xff09; 2025 5th International Conference on Mechanical, Electronics and Electrical and Automation Control 随着全球技术进步与工业需求的不断升级&#xff0c;机械、电子电气和自动化控制技…

网络安全实训九(域环境的创建及其信息收集)

1 创建域环境 1.1 在WindowsServer2008上添加域服务 1.2 安装成功 1.3 选择蓝色字体&#xff1a;运行Active Directory域服务安装向导(dcpromo.exe) 1.4 记住新建的林&#xff0c;在安装的时候点击下一步即可 1.5 完成安装 1.6 在windows7上加入域&#xff0c;点击网络ID 1.7 …

力扣题解2576

大家好&#xff0c;欢迎来到无限大的频道。 今日继续给大家带来力扣题解。 题目描述&#xff1a; 给你一个下标从 0 开始的整数数组 nums 。 一开始&#xff0c;所有下标都没有被标记。你可以执行以下操作任意次&#xff1a; 选择两个 互不相同且未标记 的下标 i 和 j &am…

SprinBoot+Vue民宿预约微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

[羊城杯 2020]Blackcat1

知识点&#xff1a;数组加密绕过 进入页面熟悉的web三部曲&#xff08;url地址&#xff0c;web源代码&#xff0c;web目录扫描&#xff09; url地址没有什么东西去看看源代码. 这有一个mp3文件点一下看看. 在最后面发现了 PHP源码. if(empty($_POST[Black-Cat-Sheriff]) || em…

Deep Learning-Based Object Pose Estimation:A Comprehensive Survey

论文&#xff1a;https://arxiv.org/pdf/2405.07801v3 项目&#xff1a;https://github.com/CNJianLiu/Awesome-Object-Pose-Estimation 年份&#xff1a;2024 方向&#xff1a;姿态估计 1. 目标姿态估计定义 估计图像中目标相对于相机的姿态&#xff0c; 目标姿态估计是增…

【网络安全】服务基础第二阶段——第五节:Linux系统管理基础----Linux常见应用服务(Apache、数据库)

在Linux系统中&#xff0c;有许多常见的应用服务&#xff0c;它们用于执行各种任务&#xff0c;如网页托管、数据库管理、文件传输等。 Apache HTTP Server&#xff1a;用于托管网站和Web应用程序的Web服务器。Nginx&#xff1a;高性能的Web服务器和反向代理服务器&#xff0c…

11Python的Pandas:可视化

Pandas本身并没有直接的可视化功能&#xff0c;但它与其他Python库&#xff08;如Matplotlib和Seaborn&#xff09;无缝集成&#xff0c;允许你快速创建各种图表和可视化。这里是一些使用Pandas数据进行可视化的常见方法&#xff1a; 1. 使用Matplotlib Pandas中的plot()方法…

YoloV10改进策略:BackBone改进|注意力改进|HCANet全局与局部的注意力模块CAFM|二次创新|即插即用

摘要 在CAFM模型的基础上进行二次创新,我成功地开发了一个性能显著提升的改进版模型。这一创新不仅优化了特征提取和融合的方式,还极大地提高了模型的泛化能力和准确性。为了验证其有效性,我们将这一改进应用于流行的目标检测算法YoloV10,并取得了显著的精度提升。这一改进…

【笔记】二维DP

文章目录 例题lanqiao1536数字三角形题目描述输入描述输出描述解题思路选取状态1代码1选取状态2代码2 lanqiao 389摆花题目描述输入描述解题思路输出描述代码 lanqiao3711选数异或题目描述输入描述输出描述解题思路 lanqiao3348可构造的序列总数 二维DP和普通DP本质相同&#x…

ios 用JXCategoryView 库实现tab滑动切换viewController

先Pod导入安装 pod JXCategoryView.m文件 // // OrderViewController.m // scxhgh2 // // Created by xmkjsoft on 2024/9/9. //#import "OrderViewController.h" #import "NavigationBarUtils.h" #import <JXCategoryView/JXCategoryView.h>#im…

《深度学习》深度学习 框架、动态展示即推导

目录 一、深度学习 1、什么是深度学习 2、特点 3、神经网络构造 1&#xff09;单层神经元 • 推导 • 示例 2&#xff09;多层神经网络 3&#xff09;小结 4、感知器 神经网络的本质 5、多层感知器 6、动态图像示例 1&#xff09;一个神经元 相当于下列状态&…