使用 JMeter 分布式性能测试
作为一个纯 JAVA 的GUI应用,JMeter 对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过,JMeter 也可以像 LoadRunner 一样通过使用多台机器运行所谓的 Agent 来分担 Load Generator 自身的压力,并借此来获取更大的并发用户数。根据 JMeter官方文档的署名,你需要自己完成这个配置,不过不用担心,这将非常简单 ^_^
1. 在所有期望运行 JMeter 作为 Load Generator 的机器上安装 JMeter,并确定其中一台机器作为 Controller,其他的机器作为 Agent。然后运行所有 Agent 机器上的JMeter-server.bat文件——假定我们使用两台机器 192.168.0.1 和 192.168.0.2 作为 Agent;
2. 在Controller 机器的 JMeter 安装目录下找到 bin 目录,再找到 JMeter.properties 这个文件,使用记事本或者其他文字编辑工具打开它;
3. 在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。其中的 127.0..0.1 表示运行 JMeter Agent 的机器,这里需要修改为“remote_hosts=192.168.0.1:1664,192.168.0.2:1664”——其中的 1664 为 JMeter 的 Controller 和 Agent 之间进行通讯的默认 RMI 端口号;
4. 保存文件,并重新启动 Controller 机器上的 JMeter.bat,并进入 Run -> Remote Start 菜单项。看到啥了?^_^
使用命令行方式运行 JMeter 脚本
| 2.4.3 Non-GUI Mode (Command Line mode) |
| For non-interactive testing, you may choose to run JMeter without the GUI. To do so, use the following command options -n This specifies JMeter is to run in non-gui mode -t [name of JMX file that contains the Test Plan]. -l [name of JTL file to log sample results to]. -r Run all remote servers specified in JMeter.properties (or remote servers specified on command line by overriding properties) The script also lets you specify the optional firewall/proxy server information: -H [proxy server hostname or ip address] Example : JMeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000 |
上面这段说明来自 JMeter 的官方用户手册。其中提到了使用命令行方式运行 JMeter 脚本的方法。只有几个简单的参数,很直观,用起来也很方便。好处是可以节省一些系统资源。
今天尝试 300 个虚拟用户连续运行 5 分钟时——使用 GUI 方式,发现开始运行后不久 UI 就失去了响应,并提示一个有关 AWT 的错误,最终只能把 Java 进程结束掉。但是使用命令行方式时却很稳定。
不过当在命令行方式下尝试 500 个虚拟用户连续运行 5 分钟时,JMeter 抛出了一个 Out of Memory 的异常并退出了进程。
Note:
1.执行命令前要检查当前目录是否是 %JMeter_Home%\bin 目录;
2.如果 JMeter 脚本不在当前目录,需要指定完整的路径;如果要把执行的结果保存在其他地方也要指定完整的路径。
JMeter 的手册中描述了如何访问 MySQL,但是没有说明如何访问 Oracle。对于没有 Java 应用开发经验和对 Oracle 不是特别熟悉的朋友,可以参考这篇文章来简单、快速的配置好 JMeter 中的 JDBC 连接和 JDBC Request。
步骤:
- 新建一个 Thread Group;
- 新增 JDBC Connection Configuration;
- 点击新增的 JDBC Connection Configuration ,需要修改的参数包括:
- Variable Name:可以先填一个 Oracle,等会解释;
- Database URL:jdbc:oracle:thin:@{host_IP_or_machine_name}:{Oracle 监听器监听的端口}:{你的Oracle实例的名字} ——大家要注意,“{ }” 大括号 只是我用来说明用的,在配置 JMeter 时,请将 “{ }” 大括号去掉 ^_^
- JDBC Driver class:oracle.jdbc.driver.OracleDriver
- Username:访问上面Oracle实例的用户名
- Password:对应的密码
- 新增一个 JDBC Request,需要修改的参数包括:
- Variable Name:和上面的 JDBC Connection Configuration填写同样的内容。这里表示 JDBC Connection Configuration建立一个名为Oracle 的连接池,之后其它的JDBC Request都共用这个连接池;
- Query:select * from table_name 。 这里建议打开你的数据查询工具,输入一条SQL查询语句,保证可以执行看到结果的,然后copy 过来;
- 新增一个View Results Tree;
- 点击 Run,查看结果。可以在Response data tab 看到响应的返回结果。
注意事项:
- 执行时提示:No Suitable Driver。
在电脑上搜索一下 classes12.jar 这个文件,然后copy到JMeter的Lib目录下。如果找不到classes12.jar这个文件,就找找classes12.zip文件,然后把扩展名改为jar;
2. 执行时提示:ORA-00911: invalid character。
确保你在JDBC Request里面的Query中输入的SQL语句是正确的。
JMeter 用户手册中关于配置通过JDBC对数据库性能进行测试的部分如下:
Apache JMeter - User's Manual: Building a Simple Database Test Plan
另外,我做了两个 Test Plan,一个是 for Oracle 的,一个是 for MySQL 的,你可以点击下面的链接下载。
JMeter Test Plan for Oracle
JMeter Test Plan for MySQL
MySQL JDBC Driver (下载后需要自己把扩展名改为 .jar 然后放到 JMeter 的 lib 目录下)
相关文章:
使用 JMeter 分布式性能测试
作为一个纯 JAVA 的GUI应用,JMeter 对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过,JMeter 也可以像 Loa…...
【工具流】WSL2安装
一些废话 最近看到了PKU出品的cs自学指南,想要跟着里面的自学路径学国外的优质课程,无奈大多数pre教程里面都是直接Linux环境下的操作,并且我在CSwiki看到了那个熟悉的上学期学了一点的missing-semester课。 上学期自学missing-semester的时候…...
OpenGL获取GPU信息
glGetString 获取厂家信息 const GLubyte* info glGetString(GL_VENDOR); printf("GL_VENDOR:%s\n", info);info glGetString(GL_VERSION); printf("GL_VERSION:%s\n", info);info glGetString(GL_RENDERER); printf("GL_RENDER:%s\n", inf…...
毫米波雷达模块的目标检测与跟踪
毫米波雷达技术在目标检测与跟踪方面具有独特的优势,其高精度、不受光照影响等特点使其在汽车、军事、工业等领域广泛应用。本文深入探讨毫米波雷达模块在目标检测与跟踪方面的研究现状、关键技术以及未来发展方向。 随着科技的不断进步,毫米波雷达技术在…...
Linux 下 使用 Ekho 进行TTS文本转语音
官网 http://www.eguidedog.net/cn/index.phpEkho(余音)是一个免费、开源的中文语音合成软件。支持普通话、粤语。支持Linux、Windows和Android平台。 资源:https://download.csdn.net/download/weixin_44618297/88529881 参考:…...
WiFi protocol 详解
这里推荐两个 知乎上的 专题 讲的不错 802.11协议细读 - 知乎 Wi-Fi研习者 - 知乎...
llm模拟基本逻辑门
llm模拟基本逻辑门 全部代码代码解析全部代码 import paddle import numpy as np from tqdm import tqdmclass FeedFroward(paddle.nn.Layer):def __init__(self, hidden_dim)...
Linux学习第42天:Linux RS232/485/GPS 驱动实验:天外来客
Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 Linux的学习笔记今天更新到了第42天。鉴于国往笔记内容整理中出现的问题,我尽量按照平时学习时笔记的要求进行优化。尽量不再大段大段的贴代码。而是…...
CSDN每日一题学习训练——Python版(输入起始和结束的正整数,求其两个正整数之间的偶数和、两数相加)
版本说明 当前版本号[20231115]。 版本修改说明20231115初版 目录 文章目录 版本说明目录输入起始和结束的正整数,求其两个正整数之间的偶数和。题目解题思路代码思路参考代码 两数相加题目解题思路代码思路参考代码 输入起始和结束的正整数,求其两个…...
【论文】基于Hadoop的铁路货运大数据平台设计与应用
点我完整下载:基于Hadoop的铁路货运大数据平台设计与应用.docx 基于Hadoop的铁路货运大数据平台设计与应用 Design and Application of Railway Freight Big Data Platform based on Hadoop 目录 目录 2 摘要 3 关键词 4 第一章 绪论 4 1.1 研究背景 4 1.2 研究目的…...
GoF之代理模式
2023.11.12 代理模式是GoF23种设计模式之一,其作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以…...
post 和get参数 请求
json参数 post请求格式 RestController public class HelloController { //json参数 post 请求RequestMapping("/jsonParam")public String jsonParam(RequestBody User user){System.out.println(user);return "OK";} } postman 接口测试工具…...
RabbitMQ多线程配置和异常解决办法
(1)RabbitMQ多线程配置 RabbitMqConfig.java Bean("customContainerFactory") public SimpleRabbitListenerContainerFactory containerFactory(SimpleRabbitListenerContainerFactoryConfigurer configurer, ConnectionFactory conn…...
【原创】java+swing+mysql车辆维修管理系统设计与实现
摘要: 车辆维修管理系统是一个用于管理和追踪车辆维修过程的系统,它能够提高效率,减少错误,并提供详细的车辆历史记录,可以帮助车辆维修企业实现信息化管理,提高工作效率和客户满意度,降低运营…...
无法在 DLL“SQLite.Interop.dll”中找到名为”sIb4c632894b76cc1d“
做项目,碰到这个问题,网上的解决办法都是 更换sqlite版本去解决 在我这里不适用 我这里的项目是一个主项目 下面挂载了很多其子项目 解决办法是 把子项目 和 主项目 更换为统一的sqlite版本 , 如果统一更换后还不可以 就把主项目下生成的 (一定要确保主项目下的sqlite版本一定是…...
linux高级篇基础理论一(详细文档、Apache,网站,MySQL、MySQL备份工具)
♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技…...
周赛370(模拟、树形DP(正难则反)、树状数组优化DP)
文章目录 周赛370[2923. 找到冠军 I](https://leetcode.cn/problems/find-champion-i/)模拟 [2924. 找到冠军 II](https://leetcode.cn/problems/find-champion-ii/)统计入度 [2925. 在树上执行操作以后得到的最大分数](https://leetcode.cn/problems/maximum-score-after-appl…...
python实现一个简单的桌面倒计时小程序
本章内容主要是利用python制作一个简单的桌面倒计时程序,包含开始、重置 、设置功能。 目录 一、效果演示 二、程序代码 一、效果演示 二、程序代码 #!/usr/bin/python # -*- coding: UTF-8 -*- """ author: Roc-xb """import tkin…...
解决STM32F429烧录程序后还需复位才能植入程序的bug
1.打开魔术棒,打开debug 2.打开setting 3.打开Flas Download 4.开启Reset and Run 5.点进去Pack选项页面,去掉enable...
使用Golang调用摄像头
近年来,摄像头成为了我们生活中不可或缺的设备之一。从智能手机到安全监控系统,无处不在的摄像头给我们带来了便利和安全。在开发摄像头相关的应用程序时,选择一种高效和易用的编程语言是非常重要的。本文将介绍如何使用Golang调用摄像头并进…...
解决Legado书源调试难题:从问题诊断到环境优化的完整指南
解决Legado书源调试难题:从问题诊断到环境优化的完整指南 【免费下载链接】legado Legado 3.0 Book Reader with powerful controls & full functions❤️阅读3.0, 阅读是一款可以自定义来源阅读网络内容的工具,为广大网络文学爱好者提供一种方便、快…...
VLN性能飙升的秘密:手把手拆解JanusVLN的‘记忆宫殿’与KV缓存增量更新机制
VLN性能飙升的工程密码:JanusVLN混合缓存与增量更新机制深度解析 视觉语言导航(VLN)技术正面临一个关键瓶颈——随着导航路径延长,系统需要处理的视觉帧数量呈线性增长,导致计算资源消耗急剧上升。传统方法要么反复处理…...
微信聊天记录年度报告怎么生成?实测这款工具,一键导出HTML还能做可视化分析
从数据到故事:用专业工具打造你的微信聊天年度可视化报告 微信聊天记录早已不只是简单的文字交流,它们承载着人际关系的发展脉络、重要时刻的见证以及日常生活的点滴。将这些碎片化的对话转化为结构化的年度报告,不仅能帮助我们回顾过去一年…...
韩国AI芯片企4亿融资,挑战英伟达?
3月31日消息,韩国AI芯片初创企业Rebellions完成4亿美元融资,总融资达8.5亿美元,估值约23.4亿美元,正筹备上市。还发布两款产品,欲挑战英伟达。巨额融资与上市筹备近日,Rebellions宣布完成4亿美元融资&#…...
肿瘤免疫微环境解析:8大免疫浸润工具实战指南
1. 肿瘤免疫微环境分析的核心价值 当你拿到一份肿瘤样本的转录组数据时,最令人兴奋的莫过于揭开它的免疫面纱——那些隐藏在肿瘤组织中的免疫细胞究竟在做什么?这就是免疫浸润分析的价值所在。想象一下,肿瘤组织就像一座复杂的城市࿰…...
别再死记硬背了!用74HC系列CMOS芯片,手把手带你理解逻辑门电平与噪声容限
74HC系列CMOS芯片实战:从数据手册到面包板的逻辑门电平全解析 当你在深夜调试一块74HC04反相器搭建的振荡电路时,示波器上本该清晰的方波却出现了毛刺和畸变——这种场景对电子爱好者来说再熟悉不过。本文将以74HC系列CMOS芯片为核心,通过五…...
HunyuanVideo-Foley高算力适配:RTX4090D显存利用率优化至92%实测
HunyuanVideo-Foley高算力适配:RTX4090D显存利用率优化至92%实测 1. 镜像概述与核心优势 HunyuanVideo-Foley私有部署镜像专为视频与音效生成任务深度优化,基于RTX 4090D 24GB显存硬件平台打造。经过CUDA 12.4与驱动550.90.07的针对性调优,…...
传统文化与现代AI结合:Guohua Diffusion国风绘画商业应用案例
传统文化与现代AI结合:Guohua Diffusion国风绘画商业应用案例 1. 国风绘画生成工具概述 Guohua Diffusion是一款专为国风绘画设计的本地生成工具,基于原生Guohua-Diffusion模型开发。这款工具完美融合了中国传统绘画艺术与现代AI技术,为艺术…...
GPT-SoVITS WebUI 终极指南:5分钟快速上手一站式语音合成解决方案
GPT-SoVITS WebUI 终极指南:5分钟快速上手一站式语音合成解决方案 【免费下载链接】GPT-SoVITS 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS GPT…...
ComfyUI效果实测:多插件加持下的高清AI绘画生成对比
ComfyUI效果实测:多插件加持下的高清AI绘画生成对比 1. 引言:为什么选择ComfyUI 在AI绘画领域,ComfyUI以其独特的工作流设计方式脱颖而出。与传统的AI绘画工具不同,ComfyUI采用节点式工作流设计,让用户可以像搭积木一…...
