[转帖]如何通过JMeter测试金仓数据库KingbaseES并搭建环境
1.安装JMeter
Apache JMeter是Apache组织开发的基于Java的压力测试工具,主要用于对软件的压力测试,它最初被设计用于Web应用测试,但后来扩展到其它测试领域。它可测试静态、动态资源,如静态文件、Java小服务程序、CGI脚本、Java对象、数据库等等。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter还能够对应于程序做功能的回归测试,通过创建带有断言的脚本来验证程序返回了期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
如果还没有JMeter程序,您可以访问官方网站http://jmeter.apache.org,并下载获取当前最新的二进制(Binaries)程序包(如作者下载时最新版本为5.4.1,并标明需要java 8+)。下载后的程序为java的压缩文件,支持跨Linux、Windows等平台运行,程序包如下:
apache-jmeter-5.4.1.zip
作者本次测试是在Windows平台下进行的,解压apache-jmeter-5.4.1.zip程序即可使用,解压缩后如下图所示:

注意:程序的上级目录最好不要有中文等特殊字符,一些测试可能会因为字符集的原因异常。
2.安装JDK
上文提到JMeter的5.4.1版本需要java 8以上的支持。如果安装JMeter程序的计算机上不存在JDK9及以上的版本时,则需要立即安装。截止作者撰写本文,JDK的最新版本为JDK17,本次测试选择安装JDK9。我们可以访问Java的官方网站http://www.oracle.com/java,并下载获取Windows版本的JDK9。
下载JDK9安装包后,按照缺省选项进行安装。安装成功后,将会有jdk-9与jre-9两个目录,根据Windows操作系统的差异,安装的目录位置可能有所不同。作者的安装位置(C:\Program Files\Java)如下图所示:

安装JDK结束,配置Java的环境变量。操作步骤如下:
找到“计算机”,一些版本的Windows操作系统可能叫“我的电脑”,或者“此电脑”。然后使用鼠标右键打开“属性”菜单,得到以下的面板:

点击“高级系统设置”,进入“系统属性”面板,如下图所示:

点击“环境变量”按钮,进入“环境变量”配置界面,如下图所示:

配置JAVA_HOME环境变量,点击“用户变量”的“新建(N)”按钮,弹出“新建用户变量”输入框,在输入框中定义JAVA_HOME环境变量,该环境变量的值则为JDK9安装目录下的jdk-9目录的绝对路径。如果已经配置过,配置如下图所示:

配置PATH环境变量,需要注意的是:一些计算机系统尚无PATH环境变量,则需要采用上一步骤的方式新增PATH环境变量;如果计算机系统已经存在PATH环境变量,则应该选择“编辑(E)”按钮。作者的计算机系统尚无PATH环境变量,点击“用户变量”的“新建(N)”按钮,弹出“新建用户变量”输入框,在输入框中定义PATH环境变量,该环境变量的值配置为“%JAVA_HOME%\bin”,配置如下图所示:

自此,JDK9的程序安装与环境变量配置结束。在Windows的命令提示符窗口下运行java程序验证,如下图所示,能正确显示出java的版本,并且显式为“9”,则说明JDK9安装配置成功。

3.JMeter测试数据库配置
在使用JMeter测试KingbaseES数据库之前,需要预先准备好测试服务器与测试环境。本次测试需要:
一个能远程访问的数据库服务器(可以就安装在本机,也可以安装在远端服务器);
一台安装有JMeter的Windows计算机;
还需要在KingbaseES数据库服务器上准备一些数据,用作后续的测试。
本文意在简单介绍如果使用JMeter进行KingbaseES数据库的测试,重点在全流程的配置介绍,因此测试的内容比较简单,仅测试数据写入(INSERT)测试。
3.1.启动KingbaseES服务器
数据库服务器准备的工作包括:
- 用户根据自身的测试环境需要,首先启动KingbaseES V8R6服务器,并确定服务器的网络地址与端口(如10.10.12.252:2222);
- 选择测试数据库,如作者使用“test”数据库作为测试库,如果没有则新建之,并准备好访问的用户名与密码(如用户名:pfu,密码:123);
- 连接测试数据库“test”,新建后续测试使用的表tb,新建命令如下:
CREATE TABLE tb (id INT, d TIMESTAMP);
3.2.安装KingbaseES的JDBC库
从“人大金仓”公司的官方渠道获取JDBC的Java库,如作者使用的KingbaseES V8R6版本的JDBC程序包为jdbc-V008R006B0403.tar.gz。解压缩后可得到如下图所示的三个jar库:

把这三个jar库拷贝到JMeter的lib目录之下,如作者拷贝之后如下图所示:

自此,我们完成了把KingbaseES的JDBC库安装到JMeter。经过前面的各种准备,是时候新增“测试计划”了。在此之后,就可以开启我们的测试之旅了。
3.3.新建测试计划
首先进入JMeter的二进制程序目录下的bin目录(如:“D:\apache-jmeter-5.4.1\apache-jmeter-5.4.1\bin”),找到JMeter的可运行程序所在位置,bin目录下的文件如下图所示:

启动JMeter,一般情况下,双击“jmeter.bat”批处理命令脚本就可打开JMeter。但很多时候不能正常打开。这时候可以先打开一个CMD命令行提示符窗口,然后再运行“java –jar ApacheJMeter.jar”命令,如下图所示:

成功打开JMeter后的程序界面如下图所示:

打开JMeter成功的同时,默认新建了一个名为“测试计划”的计划。我们将“测试计划”更名为“Kdb测试计划”,修改后如下图所示:

3.3.1为测试计划新建线程组
为测试计划新建“线程组”的步骤如下:
鼠标右键单击“Kdb测试计划”,依次选择菜单面板中的“添加”、“线程(用户)”、“线程组”按钮,为测试计划新建“线程组”,如下图所示:

新建之后的线程组缺省配置如下图所示:

用户根据测试的需要对其进行配置,本次测试的配置是。配置界面如下,仅供参考:

3.3.2为线程组新建JDBC连接配置
在新建JDBC的配置之前,先要查看上文安装的KingbaseES的jdbc库的驱动信息,查看方式是在命令行提示符窗口运行“java -jar kingbase8-8.6.0.jar -v”命令。查看的结果如下图所示:

从上图我们可以得到kingbase8-8.6.0.jar的JDBC驱动类为“com.kingbase8.Driver”。现在可以开始JDBC的连接配置了。配置步骤如下:鼠标右键单击“线程组”,依次选择菜单面板中的“添加”、“配置元件”、“JDBC Connection Configuration”按钮,新建“JDBC Connection Configuration”,如下图所示:

新建之后的JDBC连接配置缺省配置如下图所示:

给JDBC连接池命名,此名称在下一章节的“JDBC请求”新建中需要。这里配置Variable Name Bound to Pool的名称(即Variable Name for create pool)为:kdb,如下图所示:

配置JDBC连接池的驱动类,主流的数据库驱动类可直接在“JDBC Driver class”处通过“下拉选择框”选择。KingbaseES的jdbc不在“下拉选择框”中,则需要手动添加,添加的方式是点击“编辑”按钮,如下图所示:

点击“编辑”按钮后,输入上文中得到的KingbaseES的驱动类名称“com.kingbase8.Driver”,如下图所示:

继续配置数据库连接池的数据源,作者的配置如下所示:

自此,KingbaseES的JDBC连接池配置结束,其中使用了上文准备的数据库服务器访问的网络地址与端口、测试数据库test,以及访问数据库的用户名与密码。
注意:Database URL的格式为jdbc:kingbase8://server.host.address:port/database
3.3.3为线程组新建JDBC请求
“线程组”中的每一个线程,在测试的时候都是在做任务,任务的具体内容可以由JDBC请求来定义。以下是定义JDBC请求的步骤:
- 鼠标右键单击“线程组”,依次选择菜单面板中的“添加”、“取样器”、“JDBC Request”按钮,新建“JDBC Request”,如下图所示:

新建后的界面,缺省配置如下图所示:

- 配置Variable Name Bound to Pool为kdb(上文中JDBC连接池中所新建),并选择查询类型(Query Type)为“Update Statement”,填写更新类SQL,如下图所示:

自此,KingbaseES的JDBC请求配置结束,其中使用了上文准备的测试“表”tb。
注意:Variable Name Bound to Pool配置的值一定要与JDBC连接池中的值保持一致。
3.3.4为线程组新建查看结果树
自此,并发测试的工作任务单元“线程组”已经建立;连接数据库所使用的JDBC“数据源”已经建立;“线程组”要执行的任务,即取样器(如:JDBC请求)也已经建立。但是JMeter还无法进行测试,它还需要一个监听器(如:查看结果树)。
鼠标右键单击“线程组”,依次选择菜单面板中的“添加”、“监听器”、“察看结果树”按钮,新建结果树,如下图所示:

新建后的界面,缺省配置如下图所示:

自此,“察看结果树”新建完成,JMeter测试KingbaseES数据库所需的测试计划新建完毕。保存所有的配置。
4.开始JMeter测试
选中“察看结果树”,并点击工具栏的“启动”按钮( )开始测试,开始JMeter测试KingbaseES数据库。运行的界面如下图所示:

如果需要,可以点击“停止”按钮(stop),手动结束JMeter的测试。如果JDBC Request中的SQL命令执行出错时,也会自动停止。
查看一下KingbaseES数据库后台的test数据库下的tb表,发现JMeter已经写入了大量的数据。

自此,JMeter测试KingbaseES数据库的测试就完成了。
[转帖]如何通过JMeter测试金仓数据库KingbaseES并搭建环境的更多相关文章
- 通过jmeter连接人大金仓数据库
某项目用的人大金仓数据库,做性能测试,需要用jmeter来连接数据库处理一批数据.jmeter连接人大金仓,做个记录. 1. 概要 在"配置元件"中添加"JDBC Con ...
- 通过ODBC接口访问人大金仓数据库
国产化软件和国产化芯片的窘境一样,一方面市场已经存在性能优越的同类软件,成本很低,但小众的国产化软件不仅需要高价买入版权,并且软件开发维护成本高:另一方面,国产软件目前普遍难用,性能不稳定,Bug ...
- QT 之 ODBC连接人大金仓数据库
QT 之 使用 ODBC 驱动连接人大金仓数据库 获取数据库驱动和依赖动态库 此操作可在人大金仓官网下载与系统匹配的接口动态库,或者从架构数据库的源码中获取驱动和依赖动态库 分别为: 驱动动态库:kd ...
- linux安装国产数据库(金仓数据库,达梦数据库,南大通用数据库)
今天在公司做的任务是,在Linux的环境下安装三种数据库,结果一种数据库也没有安装好,首先遇到的问题是安装南大通用数据库遇到安装的第五步,就出现问题了,问题是Gbase SDK没有安装成功,以及Gba ...
- Rocky4.2下安装金仓v7数据库(KingbaseES)
1.准备操作系统 1.1 系统登录界面 1.2 操作系统版本信息 jdbh:~ # uname -ra Linux jdbh -x86_64 # SMP Fri Dec :: CST x86_64 G ...
- 润乾配置连接kingbase(金仓)数据库
问题背景 客户根据项目的不同,使用润乾连接的数据库类型各种各样,此文针对前几日使用润乾设计器连接kingbase金仓数据库做一个说明. kingbase金仓数据库是一款国产数据库,操作方式和配置 ...
- 教你10分钟对接人大金仓EF Core 6.x
前言 目前.NET Core中据我了解到除了官方的EF Core外,还用的比较多的ORM框架(恕我孤陋寡闻哈,可能还有别的)有FreeSql.SqlSugar(排名不分先后).FreeSql和SqlS ...
- 用JMeter测试monggodb的请求
JMeter测试MongoDB性能有两种方式,一种是利用JMeter直接测试MongoDB[即通过MongoDB协议测试],另一种是写Java代码方式测试MongoDB[即通过java请求测试] 注: ...
- JMeter学习(十九)JMeter测试MongoDB
JMeter测试MongoDB性能有两种方式,一种是利用JMeter直接进行测试MongoDB,还有一种是写Java代码方式测试MongoDB性能. 第一种方法 1.编写Java代码,内容如下: pa ...
- Jmeter测试webocket协议
Jmeter本身不支持websocket协议的,所以需要安装第三方的插件还有6个依赖包. 首先,我们需要准备Jmeter的WebSocket协议的支持插件: JMeterWebSocketSample ...
随机推荐
- STM32CubeMX教程10 RTC 实时时钟 - 周期唤醒、闹钟A/B事件和备份寄存器
本实验主要使用STM32CubeMX软件配置STM32F407开发板实现RTC周期唤醒.闹钟A/B事件功能,周期唤醒中输出RTC时间,闹钟A/B事件发生时利用串口输出闹钟A/B事件发生提示 1.准备材 ...
- Nginx unexpected end of file 配置证书遇到问题,如何解决?
原文链接 https://bysocket.com/nginx-unexpected-end-of-file-expecting-in-key-file/ 一.Nginx unexpected end ...
- 云图说|图解制品仓库CodeArts Artifact
摘要:制品仓库用于存放由源码编译生成的.可运行的二进制文件,重要作用是实现制品文件的可信存储,支撑软件开发活动. 本文分享自华为云社区<[云图说]第277期 图解制品仓库CodeArts Art ...
- 技术实践丨基于MindSpore框架Yolov3-darknet模型的篮球动作检测体验
摘要:通过对篮球动作的分类训练及识别检测实例的讲解和体验,使我们了解了Yolov3模型的原理.架构等基本知识,为日后的深入学习奠定了基础. 背靠全新的设计理念,华为云推出了 MindSpore深度学习 ...
- 解读顶会ICDE’21论文:利用DAEMON算法解决多维时序异常检测问题
摘要:该论文针对多维时序数据的异常检测问题,提出了基于GAN和AutoEncoder的深度神经网络算法,并取得了当前State of the Art (SOTA)的检测效果.论文是云数据库创新LAB在 ...
- M-SQL:超强的多任务表示学习方法
摘要:本篇文章将硬核讲解M-SQL:一种将自然语言转换为SQL语句的多任务表示学习方法的相关论文. 本文分享自华为云社区<[云驻共创]M-SQL,一种超强的多任务表示学习方法,你值得拥有> ...
- SpringBoot 2.x 正式停更了。Java 8 就看 Solon 的了!
最近有好多个新闻说:SpringBoot 2.x 正式停更了,Java 8 怎么办?当然用 Solon 喽! Solon,同时支持 jdk8, jdk11, jdk17, jdk21.也支持 graa ...
- redis之列表 redis之hash redis其他操作 redis管道 django中使用redis celery介绍和安装 celery快速使用 celery包结构
目录 昨日回顾 今日内容 1 redis之列表 2 redis之hash 3 redis其他操作 4 redis 管道 5 django中使用redis 6 celery介绍和安装 7 celery快 ...
- 【Vue】大总结
目录 vue大回顾 模板语法处理xss攻击 Vue单页面组件 ts泛型 sass\less\css的区别 ...toRef() defineEmits 练习 根据分数显示颜色 vue大回顾 1 前端发 ...
- 【HZERO】分支管理
分支管理 分支类型 feature-[任务编号]-简单描述: 任务开发分支,针对迭代子任务建立的开发分支 bugfix :修复分支,用于缺陷修复. develop:开发分支,所有开发人员都可以提交代码 ...