[转帖]如何通过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 ...
随机推荐
- c++ 期末编程题
1. 计算两点之间的距离 #include <iostream> #include <cmath> using namespace std; int main() { int ...
- 通过 KernelUtil.dll 劫持 QQ / TIM 客户端 QQClientkey / QQKey 详细教程(附源码)
前言 由于 QQ 9.7.20 版本后已经不能通过模拟网页快捷登录来截取 QQClientkey / QQKey,估计是针对访问的程序做了限制,然而经过多方面测试,诸多的地区.环境.机器也针对这种获取 ...
- gitee图床不能用了,心态崩了
起因 大概上周五晚上吧,想着可以正常下班了.也没啥事,正好可以逛逛自己的小破站,看看有没有小伙伴留言什么的. 然后发现小破站图片显示不出来了... 一开始也没在意,想着可能是Gitee又挂了,可能一会 ...
- .NET技术分享日活动-202107
2021年7月3日下午,个人组织举办了山东地区的第二次山东.NET技术分享日活动.围绕互联网技术.大数据.机器学习.业务实践等方向进行创新技术的实践分享. 本次技术分享日活动面向了山东地区广大的.NE ...
- 【菜鸟必看】stm32定时器的妙用
摘要:本文为你带来关于stm32定时器的使用的便利和优势之处. 使用定时器去计算获取一条的时间 一.初步了解定时器 stm32定时器时钟图如下: 定时器2-7:普通定时器定时器1.8:高级定时器 二. ...
- 案例解析丨金蝶K/3 Wise接入华为云RDS数据库SQL Server
1. 简介 企业或用户将数据中心部署在线下,采用独立软件提供商(Independent Software Vendor)软件进行管理.线下数据运维成本较高,故障容灾单一化,是目前遇到的瓶颈.采用云上数 ...
- 十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能
本文分享自华为云社区<[云享问答]第2期 十问Huawei Cloud Toolkit:开发插件如何提升云上开发效能>,作者:华为云社区精选. 众所周知,桌面集成开发环境(IDE)已经融入 ...
- 聊聊数仓中TPCD-DS&TPC-H与查询性能的那些事儿
摘要:详细讲述使用GaussDB(DWS)时,如何使用TPC-DS/TPC-H等标准数据模型,获取DWS的查询性能数据. 本文分享自华为云社区<GaussDB(DWS) <DWS之TPCD ...
- vue2升级vue3:composition api中监听路由参数改变
vue2 的watch回顾 我们先回顾一下vue2中watch <watch性能优化:vue watch对象键值说明-immediate属性详解> <vue中methods/watc ...
- JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并
JAVA PDF 截取N页,生成新文件,转图片,多个PDF 合并 <dependency> <groupId>com.itextpdf</groupId> < ...