使用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

在文件上部加上如下配置:

# 这里的JAVA_HOME填写linux系统的路径 
export JAVA_HOME=/usr/local/java/jdk17.0.12 
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin

生效环境变量配置:

source /etc/profile

验证java是否已经安装成功: java -version,出现版本号即安装成功

0

(二)、linux下安装jmeter

下载地址: https://jmeter.apache.org/download_jmeter.cgi

在/usr/local目录下创建jmeter文件夹

配置jmeter环境变量:在/etc/profile文件上部添加配置信息:

export JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.6.3 
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH 
export PATH=$JMETER_HOME/bin:$PATH

生效jmeter环境变量:source /etc/profile

验证jmeter是否安装成功:jmeter --version

0

三、前置准备

如果使用linux环境执行jmeter压测。可以先在windows下使用可视化页面编辑jmx配置文件后,上传到linux使用命令压测。

(一)、配置jdbc

准备压测tidb数据库,所以需要先下载jdbc驱动包。

tidb jdbc驱动包下载地址: https://downloads.tidb.com/archives/c-j/

选择要下载的版本,Operating system选择platform independent,选择zip格式的包下载。

image.png

下载后解压压缩包,把下面tidb-connerctor-j-8.0.33.jar放到jmeter目录下的lib下:

image.png

(二)、在windows下打开jmeter

下载jmeter后,解压压缩包。进入jmeter文件夹下的bin目录下:

image.png

双击jmeter.bat后会打开可视化页面。

image.png

(三)、jmeter汉化

  1. 短暂的可视化页面汉化。点击options --> choose language --> chinese(Simplified)

这种方式设置后,下次再打开还是会还原成英文。

image.png

  1. 永久的可视化页面汉化,在jmeter的bin目录下,找到jmeter.properties文件,打开后找到language,放开注释,维护类型为zh_CN

image.png

四、jmeter压测脚本编辑

(一)、执行一个查询

场景:

连接tidb数据库127.0.0.1 端口3306,账户:root,密码:3306

开启一个线程执行select * from test where id = '?' 该sql,参数动态从csv中获取,持续运行30s。

  1. 创建一个线程组

image.png

  1. 配置线程组如下

image.png

  1. 创建jdbc配置信息

右击线程组“查询”,添加-->配置元件-->JDBC Connection Configuration

image.png

  1. 编辑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

image.png

  1. 添加jdbc request,右击线程组“查询”,添加-->取样器-->jdbc request

image.png

  1. 修改jdbc request配置信息

image.png

  1. 添加csv配置,右击线程组“查询”,添加 --> 配置元件 --> CSV Data Set Config

image.png

  1. 配置csv信息

创建一个csv文件,首行为列名“id”

image.png

image.png

  1. 添加查看结果树,(这里本地测试的时候添加即可,正式压测时可以删除)。右击线程组“查询”,添加 --> 监听器 --> 查看结构树

image.png

  1. 添加汇总报告,右击线程组“查询”,添加 --> 监听器 --> 汇总报告。

image.png

  1. 最终的配置结构如下:

image.png

  1. 执行压测,点击如下绿色按钮。

image.png

  1. 执行后查看结构树

这里可以看到每次请求的执行结果,列表中绿色图标表示成功,红色图标表示失败。

右侧的取样器:展示具体的请求和响应延时等

请求:展示执行的sql和参数。

响应数据:查看查询出的数据。

image.png

  1. 查看汇总报告

image.png

(二)、执行多个查询

场景:

连接tidb数据库127.0.0.1 端口3306,账户:root,密码:3306

开启一个线程执行sql1:select * from test where id = '?' 和sql2:select * from test where name = '?',参数动态从csv中获取,持续运行30s。

注意:步骤和一个查询的相同,下面只列出不同的配置。

  1. jdbc 配置中增加?allowMultiQueries=true

0

  1. jdbc request配置

0

  1. csv配置信息

0

(三)、多个线程组执行不同类型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。

  1. 总体的配置如下

在测试计划下维护jdbc配置信息,提供给线程组1和线程组2共同使用。

这里我想看一个总体结果,所以汇总报告和结构树放在测试计划下面,而不是每个线程组下。如果想查看每个线程组的汇总报告,可以在每个线程组下放汇总报告和结果树。

0

  1. 线程组1开启了1个线程,持续30s。

0

  1. 线程组2开启了2个线程,持续30s。

0

五、linux下使用上述配置进行压测

  1. 在上述的可视化界面中编辑完配置,ctrl + s 保存配置到本地,比我我保存的为 yc.jmx
  2. 记得上传jdbc驱动jar到linux环境下的jmeter中lib下。
  3. 把yc.jmx和csv上传到装有jmeter的linux上。
  4. 如果想修改个别参数,可以直接编辑yc.jmx文件即可。如下修改数据库连接为172.16.0.13

0

  1. 修改查询线程组的线程数为5

0

  1. 修改csv的路径为当前目录(即和jmx文件相同目录)

0

  1. 执行如下命令进行压测:

#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

  1. 把yc.jtl文件导入到windows可视化工具查看结果,查看汇总报告:

打开汇总报告,选择文件yc.jtl, 可以加载如下的压测数据信息

0

六、总结

JMeter是个开源的工具,支持各种的压测场景,不管是对tidb还是对其他数据库都存在高度的支持。还可以根据自己的业务场景定制化不同的脚本来执行压测操作。

以上是本人使用过程中的场景总结,希望给大家提供帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/503870.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CANN 学习——基于香橙派 KunpengPro(1)

异构计算架构CANN(Compute Architecture for Neural Networks)是昇腾针对AI场景推出的异构计算架构,向上支持多种AI框架,包括MindSpore、PyTorch、TensorFlow等,向下服务AI处理器与编程。 1CANN 总体架构 CANN 软件架…

计算机毕业设计Python中华古诗词知识图谱可视化 古诗词智能问答系统 古诗词数据分析 古诗词情感分析模型 自然语言处理NLP 机器学习 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

海陵HLK-TX510人脸识别模块 stm32使用

一.主函数 #include "stm32f10x.h" // Device header #include "delay.h" #include "lcd.h" #include "dht11.h" #include "IOput.h" #include "usart.h" //#include "adc.h" …

apex安装

安装过程复杂曲折,网上说的很多办法,貌似成功了,实际还是没起作用。 先说成功过程,执行下面命令,安装成功(当然,前提是你要先配置好编译环境): (我的环境&a…

虹软人脸识别

虹软人脸识别 一.虹软人脸识别1. 获取APP_ID与SDK_KEY2. 获取SDK二.Spring整合1. jar包引入2. yaml配置3. 配置类4. 工具类5. api接口6. 启动加载三.前端四.相关文献一.虹软人脸识别 开发者平台 1. 获取APP_ID与SDK_KEY 2. 获取SDK 开发文档 jar包与dll文件

oracle闪回恢复数据:(闪回查询,闪回表,闪回库,回收站恢复)

oracle的闪回查询,可以查询提交在表空间的闪回数据,并可以还原所查询的数据,用于恢复短时间内的delele 或者 update 误操作,非常方便,缺点是只能恢复大概几小时内的数据。 文章目录 概要闪回查询恢复数据的主要方法包括…

【第01阶段-基础必备篇-第二部分--Python之基础】04 函数

1 定义函数 自定义函数的语法格式如下: 以英文半角冒号结尾 由于定义函数时的参数不是实际数据,会在调用函数时传递给它们实际数据,所以我们称定义函数时的参数为形式参数,简称形参:称调用函数时传递的实际数据为实际参数&#x…

Ubuntu 下载安装 kibana8.7.1

来到 Kibana 和 Es 的版本兼容性列表根据自己的 Es 版本选择合适的 Kibana 版本: https://github.com/elastic/kibana#version-compatibility-with-elasticsearch 尽量让 Kibana 的版本和 Es 的版本保持一致。 来到 Kibana 的版本发布历史页面:https:/…

【PPTist】批注、选择窗格

前言:本篇文章研究批注和选择窗格两个小功能 一、批注 批注功能就是介个小图标 点击可以为当前页的幻灯片添加批注,还能删除之前的批注 如果我们增加了登录功能,还可以在批注上显示当前的用户名和头像,不过现在是写死的。 左侧…

【docker系列】可视化Docker 管理工具——Portainer

1. 介绍 Portainer是一个可视化的Docker操作界面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录…

Chrome访问https页面显示ERR_CERT_INVALID,且无法跳过继续访问

在访问网页的时候,因为浏览器自身的安全设置问题, 对于https的网页访问会出现安全隐私的提示, 甚至无法访问对应的网站,尤其是chrome浏览器, 因此本文主要讲解如何设置chrome浏览器的设置,来解决该问题&…

《Opencv》信用卡信息识别项目

目录 一、项目介绍 二、数据材料介绍 1、模板图片(1张) 2、需要处理的信用卡图片(5张) 三、实现过程 1、导入需要用到的库 2、设置命令行参数 3、模板图像中数字的定位处理 4、信用卡图像处理 5、模板匹配 四、总结 一…

Android NDK开发实战之环境搭建篇(so库,Gemini ai)

文章流程 音视频安卓开发首先涉及到ffmpeg编译打包动态库,先了解动态库之间的cpu架构差异性。然后再搭建可运行的Android 环境。 So库适配 ⽇常开发我们经常会使⽤到第三库,涉及到底层的语⾳,视频等都需要添加so库。⽽so库的体积⼀般来说 ⾮…

机器学习笔记 - 单幅图像深度估计的最新技术

1、深度估计简述 单眼深度估计是一项计算机视觉任务,AI 模型从单个图像中预测场景的深度信息。模型估计场景中对象从一个照相机视点的距离。单目深度估计已广泛用于自动驾驶、机器人等领域。深度估计被认为是最困难的计算机视觉任务之一,因为它要求模型理解对象及其深度信息之…

.NET AI 开发人员库 --AI Dev Gallery简单示例--问答机器人

资源及介绍接上篇 nuget引用以下组件 效果展示: 内存和cpu占有: 代码如下:路径换成自己的模型路径 模型请从上篇文尾下载 internal class Program{private static CancellationTokenSource? cts;private static IChatClient? model;privat…

PostgreSQL学习笔记(二):PostgreSQL基本操作

PostgreSQL 是一个功能强大的开源关系型数据库管理系统 (RDBMS),支持标准的 SQL 语法,并扩展了许多功能强大的操作语法. 数据类型 数值类型 数据类型描述存储大小示例值SMALLINT小范围整数,范围:-32,768 到 32,7672 字节-123INTE…

Leffa 虚拟试衣论文笔记

Leffa: Learning Flow Fields in Attention for Controllable Person Image Generation https://github.com/xuanandsix/awesome-virtual-try-on-note/tree/main/Leffa 打开链接查看详情,更多虚拟试穿论文持续更新。

06-RabbitMQ基础

目录 1.初识MQ 1.1.同步调用 1.2.异步调用 1.3.技术选型 2.RabbitMQ 2.1.安装 2.2.收发消息 2.2.1.交换机 2.2.2.队列 2.2.3.绑定关系 2.2.4.发送消息 2.3.数据隔离 2.3.1.用户管理 2.3.2.virtual host 3.SpringAMQP 3.1.导入Demo工程 3.2.快速入门 3.2.1.消…

阻抗(Impedance)、容抗(Capacitive Reactance)、感抗(Inductive Reactance)

阻抗(Impedance)、容抗(Capacitive Reactance)、感抗(Inductive Reactance) 都是交流电路中描述电流和电压之间关系的参数,但它们的含义、单位和作用不同。下面是它们的定义和区别: …

【网络协议】IPv4 地址分配 - 第二部分

前言 在第 1 部分中,我们学习了 IPv4 地址的分配方式,了解了各种类型的 IPv4 地址,并进行了基础的子网划分(Subnetting)。在第 2 部分中,我们将继续学习子网划分,并引入一些新的概念。 【网络…