使用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.mzph.cn/web/65206.shtml

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

相关文章

Win11+WLS Ubuntu 鸿蒙开发环境搭建(一)

参考文章 Windows11安装linux子系统 WSL子系统迁移、备份与导入全攻略 如何扩展 WSL 2 虚拟硬盘的大小 Win10安装的WSL子系统占用磁盘空间过大如何释放 《Ubuntu — 调整文件系统大小命令resize2fs》 penHarmony南向开发笔记(一)开发环境搭建 一&a…

基于深度学习算法的AI图像视觉检测

基于人工智能和深度学习方法的现代计算机视觉技术在过去10年里取得了显著进展。如今,它被广泛用于图像分类、人脸识别、图像中物体的识别等。那么什么是深度学习?深度学习是如何应用在视觉检测上的呢? 什么是深度学习? 深度学习是…

HuatuoGPT-o1:基于40K可验证医学问题的两阶段复杂推理增强框架,通过验证器引导和强化学习提升医学模型的推理能力

HuatuoGPT-o1:基于40K可验证医学问题的两阶段复杂推理增强框架,通过验证器引导和强化学习提升医学模型的推理能力 论文大纲理解1. 确认目标2. 分析过程3. 实现步骤4. 效果展示 解法拆解全流程提问俩阶段详细分析 论文:HuatuoGPT-o1, Towards …

硬件基础知识笔记(2)——二级管、三极管、MOS管

Part 2 二级管、三极管、MOS管 1、二级管1.1肖特基二极管和硅二极管选型比较1.2到底是什么决定了二极管的最高工作频率?1.3二极管结电容和反向恢复时间都是怎么来的1.4肖特基二极管的工作原理1.5为什么要用肖特基二极管续流? 2、三极管2.1三极管工作原理…

vue3-dom-diff算法

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

【C++】B2093 查找特定的值

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述输入格式输出格式输入输出示例 💯题目分析与解题思路💯代码实现与对比分析我的实现代码老师的实现代码详细对比与分析1. 数组的定义方式2. …

计算机网络:网络层知识点及习题(一)

网课资源: 湖科大教书匠 1、概述 网络层实现主机到主机的传输,主要有分组转发和路由选择两大功能 路由选择处理机得出路由表,路由表再生成转发表,从而实现分组从不同的端口转发 网络层向上层提供的两种服务:面向连接…

CDP集群安全指南-动态数据加密

[〇]关于本文 集群的动态数据加密主要指的是加密通过网络协议传输的数据,防止数据在传输的过程中被窃取。由于大数据涉及的主机及服务众多。你需要更具集群的实际环境来评估需要为哪些环节实施动态加密。 这里介绍一种通过Cloudera Manager 的Auto-TLS功能来为整个…

【HTML】Day02

【HTML】Day02 1. 列表标签1.1 无序列表1.2 有序列表1.3 定义列表 2. 表格标签2.1 合并单元格 3. 表单标签3.1 input标签基本使用3.2 上传多个文件 4. 下拉菜单、文本域5. label标签6. 按钮button7. div与span、字符实体字符实体 1. 列表标签 作用:布局内容排列整齐…

基于Spring Boot的车辆违章信息管理系统(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

Apache Celeborn 在B站的生产实践

背景介绍 Shuffle 演进 随着B站业务的飞速发展,数据规模呈指数级增长,计算集群也逐步从单机房扩展到多机房部署模式。多个业务线依托大数据平台驱动核心业务,大数据系统的高效性与稳定性成为公司业务发展的重要基石。如图1,目前在大数据基础架构下,我们主要采用 Spark、Fl…

第29天:Web开发-PHP应用弱类型脆弱Hash加密Bool类型Array数组函数转换比较

#知识点 1、安全开发-原生PHP-弱类型脆弱 2、安全开发-原生PHP-函数&数据类型 3、安全开发-原生PHP-代码审计案例 一、PHP弱类型对比 1、 和 两个等号是弱比较,使用进行对比的时候,php解析器就会做隐式类型转换,如果两个值的类型不相等就…

Kafaka安装与启动教程

1.下载 先去官网Apache Kafka可以查看到每个版本的发布时间。选择你要安装的版本。 然后进入linux建立要存放的文件夹,用wget命令下载 2.安装 先解压缩: tar -xvzf kafka_2.12-3.5.1.tgz -C ../ 3.配置文件 修改server.properties: cd .…

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测

回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测 目录 回归预测 | MATLAB实ELM-Adaboost多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 一、极限学习机(ELM) 极限学习机是一种单层前馈神经网络,具有训练速…

1、pycharm、python下载与安装

1、去官网下载pycharm 官网:https://www.jetbrains.com/pycharm/download/?sectionwindows 2、在等待期间,去下载python 进入官网地址:https://www.python.org/downloads/windows/ 3、安装pycharm 桌面会出现快捷方式 4、安装python…

GESP2023年12月认证C++五级( 第三部分编程题(1)小杨的幸运数)

参考程序&#xff1a; #include <iostream> #include <cmath> using namespace std;int nextPerfectSquare(int a) {int sqrt_a (int)sqrt(a);if (sqrt_a * sqrt_a < a) {sqrt_a; // 如果 sqrt(a) 的平方小于 a&#xff0c;那么就需要加 1&#xff0c;找到下…

25年1月更新。Windows 上搭建 Python 开发环境:Python + PyCharm 安装全攻略(文中有安装包不用官网下载)

引言 随着 Python 在数据科学、Web 开发、自动化脚本等多个领域的广泛应用&#xff0c;越来越多的开发者选择它作为首选编程语言。而 PyCharm 作为一个功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;为 Python 开发者提供了极大的便利。本文将详细介绍如何在 …

IDEA配置maven和git并如何使用maven打包和git推送到gitlab

首先找到设置 在里面输入maven然后找到点击 然后点击右边两个选项 路径选择下载的maven目录下的settings文件和新建的repository文件夹 点击apply应用 然后在搜索框里搜git点击进去 此路径为git的exe执行文件所在目录&#xff0c;选好之后点击test测试下方出现git版本号表…

【Vue学习】Vue 组件实例的生命周期(四个阶段,八个钩子)

一、为什么要理解生命周期&#xff1f; 理解生命周期就像是知道了一部电影的剧情走向&#xff0c;能让你在适当的时机做出反应。Vue 生命周期的钩子让你可以在不同的阶段插入你的逻辑&#xff0c;像是提前准备、后期清理或者在数据更新时做点事情。这种“精确控制”的能力会让你…

Linux之信号量

目录 信号量 信号量相关接口 创建信号量 初始化信号量 等待信号量&#xff0c;P操作 发布信号量&#xff0c;V操作 销毁信号量 基于信号量的环形队列下的生产者和消费者模型 环形队列 代码实现 上期我们学习了线程同步的概念&#xff0c;掌握了基于阻塞队列的生产…