Jmeter 实战 JDBC配置

ops/2024/10/24 10:24:08/

请在此添加图片描述

JDBC

JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API。通过这个API,可以直接连接并执行SQL脚本,与数据库进行交互。

使用JMeter压力测试时,操作数据库的场景

在使用JMeter进行接口压力测试时,有时需要批量生成测试数据,这时可以使用JMeter连接数据库以创建相应的测试数据。测试结束后,还需要对测试数据进行还原或删除,以清理不必要的数据。这些操作都涉及到连接数据库并执行SQL语句。

以下是使用JMeter连接数据库的方法:

🧹 添加JDBC驱动程序:将JDBC驱动程序(如:MySQL驱动程序)添加到JMeter的<Apache-JMeter>/lib目录下。

🧹 配置JDBC连接字符串:在JMeter中,使用JDBC Connection Configuration元件配置数据库连接信息,包括URL、用户名、密码等。

🧹 编写JDBC请求:使用JDBC Request元件编写SQL语句,并在JMeter中执行。

🧹 添加JDBC预处理语句:在JMeter中,使用JDBC PreProcessor元件添加预处理语句,如:插入、更新等操作。

🧹 添加JDBC后置处理语句:在JMeter中,使用JDBC PostProcessor元件添加后置处理语句,如:查询、删除等操作。

通过以上步骤,可以在JMeter中使用JDBC接口连接数据库,执行SQL语句,以满足压力测试中的数据准备和清理需求。

数据库驱动包

Jmeter 连接 Mysql 数据库需安装对应的驱动包;

📩 下载地址:https://dev.mysql.com/downloads/connector/j/

请在此添加图片描述

**安装:**下载完成后解压放到Jmeter的 lib 下;

请在此添加图片描述

创建测试计划

在 JMeter 主界面上,右键单击 Test Plan,然后选择 Add -> Threads (Users) -> Thread Group。这将创建一个线程组。

请在此添加图片描述

配置 JDBC Connection Configuration

📩 步骤:添加配置元件 - JDBC Connection Configuration;

在 JDBC 连接中,配置数据库连接信息,包括 JDBC URL、用户名和密码等。

☕ **Variable Name for created pool:**字段用于设置一个变量名,该变量名将用于在测试计划中引用创建的JDBC连接池;

例如:如果将"Variable Name for created pool"字段设置为myJdbcPool,则可以在其他JDBC元件(如JDBC Request、JDBC PreProcessor和JDBC PostProcessor)中通过在"Variable Name"字段中输入myJdbcPool来引用此JDBC连接池。

这样,可以在测试计划中轻松地重用JDBC连接池,而无需为每个JDBC元件单独配置连接信息。这有助于提高测试计划的可维护性和可读性。

☕ Database URL:字段用于指定要连接的数据库的JDBC URL;

JDBC URL的格式通常为:jdbc:<数据库类型>://<主机名>:<端口号>/<数据库名>。以下是一些常见数据库的JDBC URL示例:

MySQLjdbc:mysql://localhost:3306/mydatabase
PostgreSQLjdbc:postgresql://localhost:5432/mydatabase
Oraclejdbc:oracle:thin:@localhost:1521:mydatabase
SQL Serverjdbc:sqlserver://localhost:1433;databaseName=mydatabase

请根据要连接的数据库类型和配置替换相应的值。在配置JDBC Connection Configuration元件时,请确保输入正确的JDBC URL,以便JMeter能够成功连接到目标数据库。

在JDBC URL中,可以在数据库名称之后添加一些可选参数,以便进一步配置连接(不喜欢可以不写)

MySQL
useSSL=false:禁用SSL加密。
serverTimezone=UTC:设置服务器时区。
allowPublicKeyRetrieval=true:允许从服务器获取公钥。
useUnicode=true:使用Unicode字符集。
characterEncoding=UTF-8:设置字符编码为UTF-8。
示例:
jdbc:mysql://localhost:3306/mydatabase?
useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8
PostgreSQL
ssl=false:禁用SSL加密。
sslmode=disable:禁用SSL模式。
currentSchema=myschema:设置当前模式。
示例:jdbc:postgresql://localhost:5432/mydatabase?ssl=false&sslmode=disable&currentSchema=myschema
Oracle
useSSL=false:禁用SSL加密。
defaultRowPrefetch=50:设置默认的行预取值。
示例:jdbc:oracle:thin:@localhost:1521:mydatabase?useSSL=false&defaultRowPrefetch=50
SQL Server
encrypt=false:禁用加密。
trustServerCertificate=true:信任服务器证书。
loginTimeout=30:设置登录超时时间(以秒为单位)。
示例:
jdbc:sqlserver://localhost:1433;databaseName=mydatabase;encrypt=false;trustServerCertificate=true;loginTimeout=30

请注意,这些参数可能因数据库类型和驱动程序版本而异。在配置JDBC URL时,请根据数据库类型和驱动程序版本选择合适的参数。如果不确定要使用哪些参数,可以查阅数据库驱动程序的文档以获取更多信息。在大多数情况下,不需要添加这些可选参数,除非需要进一步配置连接。

☕ **JDBC Driver class:**JDBC 驱动程序类名,用于加载数据库的 JDBC 驱动程序。每个数据库都有对应的驱动程序类名。例如,对于 MySQL 数据库,驱动程序类名通常是 com.mysql.jdbc.Driver

☕ **username:**数据库的用户名;

☕ **passwrod:**数据库的密码;

其他参数请自行翻阅API;

请在此添加图片描述J

**JDBC Driver:**不同的数据库和驱动连接方式参考下表

请在此添加图片描述

配置 JDBC Request

📩 步骤 :在线程组上右键单击,选择 Add -> Sampler -> JDBC Request (线程组-添加-取样器-JDBC Request)。将创建一个 JDBC 请求,用于模拟数据库操作。

❣️ **Variable Name bound to pool:**字段用于指定一个已经在JDBC Connection Configuration元件中创建的JDBC连接池的变量名

例如,如果在JDBC Connection Configuration元件中将"Variable Name for created pool"字段设置为myJdbcPool,则可以在JDBC Request元件中将"Variable Name bound to pool"字段设置为myJdbcPool,以便使用此JDBC连接池。

这样,可以在测试计划中轻松地重用JDBC连接池,而无需为每个JDBC Request元件单独配置连接信息。这有助于提高测试计划的可维护性和可读性。请确保在JDBC Request元件中输入正确的变量名,以便JMeter能够找到并使用正确的JDBC连接池。

❣️ Query Type: 字段用于指定要执行的SQL查询类型

Select Statement:执行一个SQL SELECT查询,用于从数据库中检索数据。
Update Statement:执行一个SQL UPDATE查询,用于修改数据库中的数据。
Insert Statement:执行一个SQL INSERT查询,用于向数据库中插入新数据。
Delete Statement:执行一个SQL DELETE查询,用于从数据库中删除数据。
Callable Statement:执行一个SQL存储过程或函数。
Prepared Select Statement:执行一个预编译的SQL SELECT查询,用于从数据库中检索数据。与"Select Statement"类似,但使用预编译的查询可以提高性能并防止SQL注入攻击。
Prepared Update Statement:执行一个预编译的SQL UPDATE查询,用于修改数据库中的数据。与"Update Statement"类似,但使用预编译的查询可以提高性能并防止SQL注入攻击。

在配置JDBC Request元件时,请根据要执行的SQL查询类型选择合适的"Query Type"。在执行预编译查询时,还需要在"Parameter values"字段中指定查询参数的值。请确保选择正确的"Query Type",以便JMeter能够正确执行SQL查询。

❣️ Query: 字段用于输入要执行的SQL查询语句;

在JMeter的JDBC Request元件中,"Query"字段用于输入要执行的SQL查询语句

以下是一些常见的SQL查询示例:

Select Statement

SELECT * FROM users WHERE username = 'JohnDoe';

Update Statement

UPDATE users SET email = 'newemail@example.com' WHERE username = 'JohnDoe';

Insert Statement

INSERT INTO users (username, email) VALUES ('JohnDoe', 'johndoe@example.com');

Delete Statement

DELETE FROM users WHERE username = 'JohnDoe';

Callable Statement

{call my_stored_procedure(?, ?)}

在配置JDBC Request元件时,请根据要执行的SQL查询类型和需求输入相应的查询语句。请确保输入正确的查询语句,以便JMeter能够正确执行SQL查询。如果使用的是预编译查询,请确保在"Parameter values"字段中指定查询参数的值。在执行存储过程或函数时,请确保在"Query"字段中使用正确的语法。

在JMeter的JDBC Request元件中,确实不建议在"Query"字段中使用分号(;),因为JMeter可能无法正确解析和执行带有分号的查询语句

在JMeter的JDBC Request元件中,不支持在单个"Query"字段中编写多条SQL语句。如果需要执行多条SQL语句,可以考虑以下方法:

  1. 使用多个JDBC Request元件:为每个SQL语句创建一个单独的JDBC Request元件。这样,可以在每个元件中编写一条SQL语句,并按照测试计划中的顺序执行它们。
  2. 使用事务:如果数据库支持事务,可以在单个JDBC Request元件中使用事务来执行多条SQL语句。在"Query"字段中编写一个BEGIN TRANSACTION语句,然后编写的SQL语句,最后编写一个COMMIT或ROLLBACK语句。这样,可以在单个JDBC Request元件中执行多条SQL语句,并确保它们作为一个原子操作执行。

请注意,这些方法可能因数据库类型和驱动程序版本而异。在使用JMeter的JDBC Request元件时,请根据的数据库类型和驱动程序版本选择合适的方法。如果不确定如何执行多条SQL语句,可以查阅数据库驱动程序的文档以获取更多信息。在大多数情况下,使用多个JDBC Request元件是最简单和最可靠的方法。

执行步骤

设置线程组参数:

  • 在线程组中,可以设置并发用户数、循环次数等参数,以模拟实际负载。

运行测试:

  • 点击工具栏上的绿色运行按钮以开始测试。

查看结果:

  • 在测试运行完成后,你可以查看各种性能指标,如响应时间、吞吐量等。
  • 还可以导出测试结果以进一步分析。

请在此添加图片描述

在执行测试之前,确保已经正确配置了数据库连接池,包括连接池大小、最大连接数等参数。另外,还要注意测试环境的负载和资源使用情况,以确保测试结果的准确性。


http://www.ppmy.cn/ops/128061.html

相关文章

ubuntu 20.4 安装 openssl 3.x

ubuntu 20.4 安装 openssl 3.x ubuntu 20.4 自带了openssl 1.0.2&#xff0c;升级为 openssl 3.x&#xff1a; # 下载 openssl 源代码压缩包 wget https://www.openssl.org/source/openssl-3.0.10.tar.gz# 安装编译包 sudo apt-get install -y g sudo apt-get install -y mak…

Godot中的信号

目录 概念 signal connect方法连接Callable 信号要求参数 查看信号 连接信号 监听信号 Button - text属性 pressed 连接源 「按钮」的信号连接 使用代码&#xff0c;将方法与信号相连接 节点的connect方法 节点直接使用emit_signal方法通过字符串的方式触发信号…

OpenEular + KVM + virt-manager 笔记

OpenEular KVM virt-manager 配置网桥 yum install -y bridge-utils#进入网络脚本路径 cd /etc/sysconfig/network-scripts/ #创建一个桥接网卡 nmcli c a con-name br0 ifname br0 type bridge #将ens33的连接修改为从属连接 nmcli c modify ens33 connection.slave-type …

在虚拟化环境中,虚拟机的资源分配是否真的能够完全等效于物理服务器?是否有某些特定的工作负载在虚拟化环境中始终无法达到理想表现?

目录 1. 虚拟化技术的基本原理与资源管理 2. 资源分配的等效性问题 3. 特定工作负载在虚拟化环境中的表现 4. 性能优化与虚拟化环境的选择 5. 结论 虚拟化技术的广泛应用为数据中心的资源管理与部署带来了革命性的变化。虚拟机&#xff08;VM&#xff09;通过抽象化的方式…

【景观生态学实验】实验二 景观类型分类

实验目的 1.掌握ArcGIS软件的基本操作&#xff1a;通过课堂理论学习与实验课的实际动手操作&#xff0c;学习并熟练掌握如何利用ArcGIS软件对遥感影像进行一些较为基础的数据处理与分析工作&#xff0c;具体包括波段合成、图像镶嵌、图像裁剪与图像分类等&#xff1b; 2.熟悉…

鸿蒙HarmonyOS NEXT 5.0开发(2)—— ArkUI布局组件

文章目录 布局Column&#xff1a;从上往下的布局Row&#xff1a;从左往右的布局Stack&#xff1a;堆叠布局Flex&#xff1a;自动换行或列 组件Swiper各种选择组件 华为官方教程B站视频教程 布局 主轴和交叉轴的概念&#xff1a; 对于Column布局而言&#xff0c;主轴是垂直方…

红队-安全见闻篇(下)

声明 学习视频来自B站UP主 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 硬件设备(知道对应的硬件上对应的扫描器就性) 一、硬件设备…

申请软件测试CNAS实验室认证人员方面要做好哪些准备?

人员是软件测试实验室申请CNAS实验室认证的一个重要要素&#xff0c;也是CNAS实验室体系建设的重要部分&#xff0c;本文我们一起来全面梳理一下&#xff0c;软件测试CNAS实验室人员相关内容。 一、软件测试CNAS实验室人员组成 软件测试实验室需要设置四类人员&#xff0c;第…