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数据库的测试就完成了。