使用 JMeter 玩转 tidb 压测
作者: du 拉松原文来源:https://tidb.net/blog/3f1ada39
一、前言
tidb 是 mysql 协议的,所以在使用过程中使用 tidb 的相关工具连接即可。因为 jmeter 是 java 开发的相关工具,直接使用 mysql 的 jdbc 驱动包即可。
二、linux 下安装 jmeter
jmeter 需要 jdk 环境,且安装 jmeter 需要 java8 以上环境。
(一)、安装 jdk
下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
这里我下载的 jdk17
解压压缩包到 /usr/local/java/ 下:
配置 jmeter 环境变量:编辑 /etc/profile 文件 vi /etc/profile
在文件上部加上如下配置:
生效环境变量配置:
source /etc/profile
验证 java 是否已经安装成功: java -version, 出现版本号即安装成功
(二)、linux 下安装 jmeter
下载地址:https://jmeter.apache.org/download_jmeter.cgi
在 /usr/local 目录下创建 jmeter 文件夹
配置 jmeter 环境变量:在 /etc/profile 文件上部添加配置信息:
生效 jmeter 环境变量:source /etc/profile
验证 jmeter 是否安装成功:jmeter –version
三、前置准备
如果使用 linux 环境执行 jmeter 压测。可以先在 windows 下使用可视化页面编辑 jmx 配置文件后,上传到 linux 使用命令压测。
(一)、配置 jdbc
准备压测 tidb 数据库,所以需要先下载 jdbc 驱动包。
tidb jdbc 驱动包下载地址:https://downloads.tidb.com/archives/c-j/
选择要下载的版本,Operating system 选择 platform independent,选择 zip 格式的包下载。
下载后解压压缩包,把下面 tidb-connerctor-j-8.0.33.jar 放到 jmeter 目录下的 lib 下:
(二)、在 windows 下打开 jmeter
下载 jmeter 后,解压压缩包。进入 jmeter 文件夹下的 bin 目录下:
双击 jmeter.bat 后会打开可视化页面。
(三)、jmeter 汉化
短暂的可视化页面汉化。点击 options –> choose language –> chinese(Simplified)
这种方式设置后,下次再打开还是会还原成英文。
永久的可视化页面汉化,在 jmeter 的 bin 目录下,找到 jmeter.properties 文件,打开后找到 language,放开注释,维护类型为 zh_CN
四、jmeter 压测脚本编辑
(一)、执行一个查询
场景:
连接 tidb 数据库 127.0.0.1 端口 3306,账户:root,密码:3306
开启一个线程执行 select * from test where id = ‘?’ 该 sql,参数动态从 csv 中获取,持续运行 30s。
创建一个线程组
配置线程组如下
创建 jdbc 配置信息
右击线程组“查询”,添加 –> 配置元件 –>JDBC Connection Configuration
编辑 jdbc 的配置文件:
配置名称为 local_tidb
tidb 的 database_url 为:jdbc:mysql://127.0.0.1:3306/test
tidb 的 driver class 为:com.tidb.cj.jdbc.Driver
user 为 root
密码为 123456
添加 jdbc request,右击线程组“查询”,添加 –> 取样器 –>jdbc request
修改 jdbc request 配置信息
添加 csv 配置,右击线程组“查询”,添加 –> 配置元件 –> CSV Data Set Config
配置 csv 信息
创建一个 csv 文件,首行为列名“id”
添加查看结果树,(这里本地测试的时候添加即可,正式压测时可以删除)。右击线程组“查询”,添加 –> 监听器 –> 查看结构树
添加汇总报告,右击线程组“查询”,添加 –> 监听器 –> 汇总报告。
最终的配置结构如下:
执行压测,点击如下绿色按钮。
执行后查看结构树
这里可以看到每次请求的执行结果,列表中绿色图标表示成功,红色图标表示失败。
右侧的取样器:展示具体的请求和响应延时等
请求:展示执行的 sql 和参数。
响应数据:查看查询出的数据。
查看汇总报告
(二)、执行多个查询
场景:
连接 tidb 数据库 127.0.0.1 端口 3306,账户:root,密码:3306
开启一个线程执行 sql1:select * from test where id = ‘?’ 和 sql2:select * from test where name = ‘?‘,参数动态从 csv 中获取,持续运行 30s。
注意:步骤和一个查询的相同,下面只列出不同的配置。
jdbc 配置中增加?allowMultiQueries=true
jdbc request 配置
csv 配置信息
(三)、多个线程组执行不同类型 sql
场景:
连接 tidb 数据库 127.0.0.1 端口 3306,账户:root,密码:3306
开启 1 个线程执行 sql1:select * from test where id = ‘?’
开启 2 个线程执行 sql2:update test set create_time = now() where name = ‘?‘,
参数动态从 csv 中获取,两组线程都持续运行 30s。
总体的配置如下
在测试计划下维护 jdbc 配置信息,提供给线程组 1 和线程组 2 共同使用。
这里我想看一个总体结果,所以汇总报告和结构树放在测试计划下面,而不是每个线程组下。如果想查看每个线程组的汇总报告,可以在每个线程组下放汇总报告和结果树。
线程组 1 开启了 1 个线程,持续 30s。
线程组 2 开启了 2 个线程,持续 30s。
五、linux 下使用上述配置进行压测
在上述的可视化界面中编辑完配置,ctrl + s 保存配置到本地,比我我保存的为 yc.jmx
记得上传 jdbc 驱动 jar 到 linux 环境下的 jmeter 中 lib 下。
把 yc.jmx 和 csv 上传到装有 jmeter 的 linux 上。
如果想修改个别参数,可以直接编辑 yc.jmx 文件即可。如下修改数据库连接为 172.16.0.13
修改查询线程组的线程数为 5
修改 csv 的路径为当前目录(即和 jmx 文件相同目录)
执行如下命令进行压测:
#jmeter -n -t test-file [-p property-file] [-l results-file] [-j log-file] # -n -t 后指定配置文件 jmx,-l 是导出压测结果到文件 jtl,-j 是输出 log 文件。 jmeter -n -t ./yc.jmx -l ../test/yc.jtl
把 yc.jtl 文件导入到 windows 可视化工具查看结果,查看汇总报告:
打开汇总报告,选择文件 yc.jtl, 可以加载如下的压测数据信息
六、总结
JMeter 是个开源的工具,支持各种的压测场景,不管是对 tidb 还是对其他数据库都存在高度的支持。还可以根据自己的业务场景定制化不同的脚本来执行压测操作。
以上是本人使用过程中的场景总结,希望给大家提供帮助。
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/8e1accab42983525bfca71a44】。文章转载请联系作者。
评论