jmeter 按线程数阶梯式压测数据库

news2024/9/29 9:35:41

当前版本:

  • jmeter 5.6.3
  • mysql 5.7.39

简介

    JMeter 通过 bzm - Concurrency Thread Group 来实现阶梯式压测,它并不是JMeter的官方插件,而是一种由Blazemeter提供的高级线程组插件。可以在不同的时间内并发执行不同数量的线程,模拟不同的负载场景。

        

文章目录如下

1. 下载插件

2. 界面说明

3. 测试步骤

3.1. 添加压测线程组

3.2. 设置JDBC配置

3.3. 构造简单业务

3.4. 配置监听器

4. 测试案例

4.1. 阶梯式加压

4.2. 持续加压

4.3. 持续加压后稳定测试


        

1. 下载插件

地址如下(下载2个包,一个用于阶梯式压测,一个用于增加性能监听器)

https://jmeter-plugins.org/downloads/old/

注意:JMeter版本3.2以上)

将下载的两个zip包解压后,找到 JMeterPlugins-Standard.jar 和 JMeterPlugins-Extras.jar,放到 jmeter\lib\ext\ 下,重启 jmeter 生效。

        

2. 界面说明

添加阶梯式压测线程组

  • 右击测试计划 → 添加 → 线程(用户) → bzm - Concurrency Thread Group

        

界面说明

        

3. 测试步骤

jmeter 通过如下组件来构造高并发:

bzm - Concurrency Thread Group  # 模拟阶梯式压测
JDBC Connection Configuration   # 配置数据库连接信息
JDBC Request  # 构造业务

通过如下监听器来查看性能指标

聚合报告    # 查看整体性能指标
jp@gc - Response Times Over Time  # 查看响应时间走势图表
jp@gc - Transactions per Second   # 查看吞吐量走势图表
jp@gc - Active Threads Over Time  # 查看线程数走势

        

3.1. 添加压测线程组

  • 右击测试计划 → 添加 → 线程(用户) → bzm - Concurrency Thread Group

需求:初始线程数64,按2倍持续叠加,分别压测 64、128、256、512、1024并发数,共测试10分钟。配置如下:

        

3.2. 设置JDBC配置

  • 右击测试计划 → 添加 → 配置元件 → JDBC Connection Configuration

"""MySQL"""
URL:jdbc:mysql://[IP]:[端口]/[数库名]  # jdbc:mysql://localhost:3306/mysql
Driver:com.mysql.jdbc.Driver
"""Oracle"""
URL:jdbc:oracle:thin:@[IP]:[端口]:[数库名]  #jdbc:oracle:thin:@localhost:1521:orcl
Driver:oracle.jdbc.OracleDriver
"""PostgreSQL"""
URL:jdbc:postgresql://[IP]:[端口]/[数库名]  # jdbc:postgresql://localhost:5432/postgres
Driver:org.postgresql.Driver

        

3.3. 构造简单业务

  • 右击线程组 → 添加 → 取样器 → JDBC Request

简单读语句(仅举例)

简单写语句(仅举例)

        

3.4. 配置监听器

  • 右击线程组 → 添加 → 监听器 → 聚合报告
  • 右击线程组 → 添加 → 监听器 → jp@gc - Response Times Over Time
  • 右击线程组 → 添加 → 监听器 → jp@gc - Transactions per Second
  • 右击线程组 → 添加 → 监听器 → jp@gc - Active Threads Over Time

所有基础配置如下:

        

配置完成后运行即可(我笔记本支撑不了1024并发,这里就不执行了)

        

4. 测试案例

4.1. 阶梯式加压

线程组配置如下:

总共20个线程,分5次加压,运行时间3分钟。

        

线程数走势如下:

        

吞吐量走势如下:

从线程数和吞吐量对比来看,8个线程最为稳定。 

        

4.2. 持续加压

线程组配置如下:

总共20个线程,不指定阶梯,总运行时间3分钟。

        

线程数走势如下:

        

吞吐量走势如下:

从线程数和吞吐量对比来看,也是6~8个线程最为稳定。 

        

4.3. 持续加压后稳定测试

线程组配置如下:

总共8个线程,持续加压时间1分钟,加压完成后继续测试2分钟。

为什么这么设定?

从前面的测试结果来看,8个线程基本达到拐点,那么继续测试持续1分钟加压到8个线程后,持续测试2分钟(检测是否稳定)。

        

线程数走势如下:

        

吞吐量走势如下:

从线程数和吞吐量对比来看,8个线程波动太大,应该6个线程更稳定。

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

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

相关文章

VUE基础知识九 ElementUI项目

ElementUI官网 一 项目 最终完成的效果: 切换上边的不同按钮,下方显示不同的表格数据 在src/components下新建不同业务组件的文件夹 1.1 搭建项目 使用脚手架搭建项目后,引入ElementUI(搭建、引入ElementUI步骤在第七节里已…

CKA认证,开启您的云原生之旅!

在当今数字化时代,云计算已经成为企业和个人发展的关键技术。而获得CKA(Certified Kubernetes Administrator)认证,将是您在云原生领域迈出的重要一步。 CKA认证是由Kubernetes官方推出的权威认证,它旨在验证您在Kuber…

事件循环解析

浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? 有了进程后&…

Premiere模板|可调整大小的快节奏图文视频模板剪辑素材

适用于Premiere Pro的可调整大小的快节奏图文视频开场pr模板素材mogrt。 主要特点:可调整大小(19201080、10801920)分辨率,Pr2021或更高版本软件,非常易于定制,19秒持续时间。 来自PR模板网:htt…

解析Hadoop三大核心组件:HDFS、MapReduce和YARN

目录 HadoopHadoop的优势 Hadoop的组成HDFS架构设计Yarn架构设计MapReduce架构设计 总结 在大数据时代,Hadoop作为一种开源的分布式计算框架,已经成为处理大规模数据的首选工具。它采用了分布式存储和计算的方式,能够高效地处理海量数据。Had…

MySQL数据库进阶第五篇(锁)

文章目录 一、锁的概述二、全局锁三、表级锁四、元数据锁(meta data lock, MDL)五、意向锁六、行级锁七、行锁(Record Lock)八、间隙锁(Gap Lock)九、临键锁(Next-Key Lock)十、锁总…

python(ch1)

四个软件简介 1. IDLE IDLE 是 Python 官方 IDLE 开发环境,一个功能简单的文本编辑器,带有语法高亮、自动补全和缩进功能。它适合初学者学习 Python 的基本语法和概念。 2. PyCharm PyCharm 是 JetBrains 开发的一款功能强大的 Python IDE&#xff0…

ChatGPT带火的HBM是什么?

“ChatGPT是人工智能领域的iPhone时刻,也是计算领域有史以来最伟大的技术之一。” 英伟达创始人兼CEO黄仁勋此前这样盛赞ChatGPT。 ChatGPT突然爆火,对大算力芯片提出了更高更多的要求。近日,据韩国经济日报报道,受惠于ChatGPT&am…

naive-ui-admin BasicTable 列表操作栏显示图标icon

效果图 在使用BasicTable的页面添加引用,这里随便弄了个icon import { GameController } from "vicons/ionicons5" 自定义列 const actionColumn reactive({width: 180,title: "操作",key: "action",fixed: "right",ren…

python爬虫实战:获取电子邮件和联系人信息

引言 在数字时代,电子邮件和联系人信息成为了许多企业和个人重要的资源,在本文中,我们将探讨如何使用Python爬虫从网页中提取电子邮件和联系人信息,并附上示例代码。 目录 引言 二、准备工作 你可以使用以下命令来安装这些库&a…

【笔记】深度学习入门:基于Python的理论与实现(二)

神经网络的学习(神经网络的学习阶段,不是我们学习神经网络) 从数据中学习 训练数据和测试数据 机器学习中,一般将数据分为训练数据和测试数据两部分来进行学习和 实验等。首先,使用训练数据进行学习,寻找最…

SQL进阶(三):Join 小技巧:提升数据的处理速度

复杂数据结构处理:Join 小技巧:提升数据的处理速度 本文是在原本sql闯关的基础上总结得来,加入了自己的理解以及疑问解答(by GPT4) 原活动链接 用到的数据:链接 提取码:l03e 目录 1. 课前小问…

C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径

C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 参考博文: 1.C++笔记之执行一个可执行文件时指定动态库所存放的文件夹lib的路径 2.Linux笔记之LD_LIBRARY_PATH详解 3.qt-C++笔记之使用QProcess去执行一个可执行文件时指定动态库所存放的文件夹lib的路径 c…

React PureComponent 和 React.memo()区别

1 注意 ● PureComponent和memo仅作为性能优化的方式存在 ● 不要依赖它来阻止渲染,会产生BUG ● PureComponnet 和memo 都是通过对 props 值的浅比较来决定该组件是否需要更新的。 2 PureComponent 和React.memo() 区别 PureComponent 和React.memo()都是React优化…

Sora专辑|AI界一夜变天

没有丝毫预热和剧透,Open AI深夜直接丢下核弹炸了街,从业者深感要变天。 2月16日凌晨,Open AI发布了首个“文生视频”模型Sora。官方介绍,Sora能根据文字指令创造出包含丰富细节的逼真场景、角色,且能用多角度镜头,生成一镜到底的60秒长视频。 目前官网上已经更新了48个…

python Matplotlib Tkinter-->导出pdf报表

环境 python:python-3.12.0-amd64 包: matplotlib 3.8.2 reportlab 4.0.9 import matplotlib.pyplot as plt from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk import tkinter as tk import tkinter.messagebox as messagebox impor…

【java-集合框架】ArrayList类

📢java基础语法,集合框架是什么?顺序表的底层模拟实现都是看本篇前的基础必会内容,本篇不再赘述,详情见评论区文章。 📢编程环境:idea 【java-集合框架】ArrayList类 1. 先回忆一下java代码中常…

Facebook Messenger链接分享:如何创建链接并设置自动化内容

Facebook Messenger链接是指基于Facebook用户名创建的会话链接,用户可以在其Facebook页面的设置部分复制此链接进行分享。然后将该链接直接粘贴到独立站、电子邮件、名片或社交媒体中,让目标受众可以一键进入对话。为了满足某些商家的需求,Fa…

Qt QWidget 简约美观的加载动画 第五季 - 小方块风格

给大家分享两个小方块风格的加载动画 &#x1f60a; 第五季来啦 &#x1f60a; 效果如下: 一个三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QGridLayout> int main(int argc, char *arg…

时间序列分析实战(四):Holt-Winters建模及预测

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…