使用JMeter玩转tidb压测

news2025/1/7 18:26:10

作者: 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.coloradmin.cn/o/2272070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024网络安全运营方案概述(附实践资料合集)

以下是网络安全运营方案的详细内容: 一、目标与原则 目标:建立一套安全高效、灵活性强的网络安全运营体系,实现对网络安全的全面监控、防护和应急响应。原则: 全员参与:网络安全是全员共同的责任,所有员工…

使用Python进行图像裁剪和直方图分析

一、简介 在数字图像处理领域,裁剪和分析图像的直方图是两个非常基本且重要的操作。本文将通过一个简单的Python项目,展示如何使用skimage和matplotlib库来裁剪图像并分析其RGB通道的直方图。 二、环境准备 在开始之前,请确保你已经安装了以…

vue3-dom-diff算法

vue3diff算法 什么是vue3diff算法 Vue3中的diff算法是一种用于比较虚拟DOM树之间差异的算法,其目的是为了高效地更新真实DOM,减少不必要的重渲染 主要过程 整个过程主要分为以下五步 前置预处理后置预处理仅处理新增仅处理后置处理包含新增、卸载、…

【U8+】用友U8软件中,出入库流水输出excel的时候提示报表输出引擎错误。

【问题现象】 通过天联高级版客户端登录拥有U8后, 将出入库流水输出excel的时候,提示报表输出引擎错误。 进行报表输出时出现错误,错误信息:找不到“fd6eea8b-fb40-4ce4-8ab4-cddbd9462981.htm”。 如果您正试图从最近使用的文件列…

[SMARTFORMS] 创建样式模板

通过事务码SMARTFORMS创建样式模板 选择样式,自定义样式模板名称ZST_DEMO_2025 点击"创建"按钮,跳转至样式模板详情页面,我们可以在该页面上设置SMARTFORMS表单相关的样式 在段落样式处,右键选择创建节点,输…

基于51单片机和DS3231时钟模块、LCD1602(I2C通信)模块的可调时钟+温度测量+计时+闹钟

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、延时函数2、定时器03、定时器14、独立按键5、DS3231时钟模块6、LCD1602模块(PCF8574T驱动) 四、主函数总结 系列文章目录 前言 之前做过一个类似的,用到了很多外设&#xff…

通义视觉推理大模型QVQ-72B-preview重磅上线

Qwen团队推出了新成员QVQ-72B-preview,这是一个专注于提升视觉推理能力的实验性研究模型。提升了视觉表示的效率和准确性。它在多模态评测集如MMMU、MathVista和MathVision上表现出色,尤其在数学推理任务中取得了显著进步。尽管如此,该模型仍…

企业级Nosql数据库和Redis集群

一、关系数据库和Nosql数据库 关系数据库 定义:关系数据库是建立在关系模型基础上的数据库。它使用表格(关系)来存储数据,通过行和列的形式组织信息。例如,一个简单的学生信息表可能有 “学号”“姓名”“年龄”“班级…

Ant Design中Flex布局、Grid布局和Layout布局详解

好的,我们来更详细地探讨 Ant Design 中的 Flex布局、Grid布局 和 Layout布局 的特点、用法、适用场景,以及如何灵活运用它们来构建页面。下面将从各个方面进行更深入的分析,并提供具体的实例。 VueFlex布局实现响应式布局 1. Flex布局 概念…

基于FPGA的SNN脉冲神经网络之IM神经元verilog实现,包含testbench

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 vivado2019.2 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff0…

健身房管理系统多身份

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…

三甲医院等级评审八维数据分析应用(四)--数据质量管理篇

一、引言 1.1 研究背景与意义 在医疗卫生领域,医院评审是衡量医院综合实力、保障医疗服务质量的重要手段。其中,三甲评审作为我国医院评审体系中的最高级别,对医院的管理、医疗技术、服务质量等各方面都设定了严格标准。医务科作为医院医疗质量管理的核心部门,肩负着协调…

Solidity合约编写(一)

Solidity IDE地址:Remix - Ethereum IDE 点击进入后在contract文件夹下创建合约 合约代码如下: // SPDX-License-Identifier: MIT pragma solidity ^0.8.26;contract SimpleStorage{bool hasFavorNumtrue;uint256 favorNum5;string favorNums"fiv…

嵌入式系统(将软件嵌入到硬件里面)

目录 Linux起源 查看操作系统的版本 查看内核的版本: 内核系统架构 系统关机或重启命令 关机: 重启: linux下的软件安装 两种软件包管理机制: deb软件包分为两种: 软件包的管理工具:dpkg apt 1…

会员制电商创新:开源 AI 智能名片与 2+1 链动模式的协同赋能

摘要:本文聚焦于电商领域会员制的关键作用,深入探讨在传统交易模式向数字化转型过程中,如何借助开源 AI 智能名片以及 21 链动模式商城小程序,实现对会员数据的精准挖掘与高效利用,进而提升企业的营销效能与客户洞察能…

Day29 - 大模型RAG,检索增强生成

如何调用第三方大模型 阿里大模型 1. 获取百炼平台 api key 【阿里云】-【产品】-【人工智能与机器学习】-【大模型服务平台百炼】 2. 参考LangChain文档 https://python.langchain.com/docs/introduction/ 3. 连接阿里大模型 """1. 引入模型 "&quo…

谷粒商城项目125-spring整合high-level-client

新年快乐! 致2025年还在努力学习的你! 你已经很努力了,今晚就让自己好好休息一晚吧! 在后端中选用哪种elasticsearch客户端? elasticsearch可以通过9200或者9300端口进行操作 1)9300:TCP spring-data-elasticsearch:transport-…

c语言的文件操作与文件缓冲区

目录 C语言文件操作函数汇总 简单介绍文件 为什么使用文件 什么是文件 文件名 二进制文件和文本文件 流和标准流 流 标准流 文件指针 文件的打开和关闭 文件的顺序读写 顺序读写函数介绍 文件的随机读写 fseek ftell rewind 文件读取结束的判定 文件缓冲区 缓…

http源码分析

一、HttpURLConnection http连接池源码分析 二、HttpClient 连接池,每个路由最大连接数 三、OkHttp okhttp的连接池与socket连接

【工具整理】WIN换MAC机器使用工具整理

最近公司电脑升级,研发同学统一更换了 Mac Book Pro 笔记版电脑,整理一下安装了那些软件以及出处,分享记录下~ 知识库工具 1、语雀 网址:语雀,为每一个人提供优秀的文档和知识库工具 语雀 个人花园&…