使用 Jmeter 压测 ShardingSphere JDBC & Proxy

背景

用户存在使用 Jmeter 压测 ShardingSphere JDBC & Proxy 的场景,以下简单介绍。

Jmeter 配置

使用官方最新的 5.6.3 Jmeter 包即可。

添加 ShardingSphere 依赖

可以直接将 ShardingSphere 相关 Jar 包放置到 jmeter/lib/ext 目录下,或者在 Test Plan 测试计划页面将 ShardingSphere Jar 包添加到 ClassPath 配置即可。

新建 jdbc connection configuration 配置

  1. 压测 ShardingSphere JDBC
    如果需要压测 ShardingSphere JDBC,需要在此处配置 ShardingSphere DataSource 数据源。

需要通过 variable name for created pool 指定连接池名称,此处指定为 ss-jdbc-pool。

然后下面配置 ShardingSphere Driver 的 database url,驱动类,用户名密码。

![[img-20250701132021.png]]

1
2
3
4
5
6
7
8
9
10
11
Database URL:
jdbc:shardingsphere:absolutepath:/xx.yaml

jdbc driver class:
org.apache.shardingsphere.driver.ShardingSphereDriver

username:
root

password:
root

配置参数解释:
Pool Prepared Statements 参数:建议配置为0,开启预编译缓存。
-1 表示禁用池化,0 表示池化预处理语句的数量不受限制。(默认为 -1 )

  1. 压测 ShardingSphere Proxy
    如果 Proxy 使用的是 MySQL 协议,可以直接使用 MySQL 驱动进行连接。
    指定 Proxy 配置,示例如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Database URL:
    # 使用预编译参数提升压测性能。
    jdbc:mysql://localhost:3307/sharding_db?useServerPrepStmts=true&cachePrepStmts=true&prepStmtCacheSize=5120

    jdbc driver class:
    com.mysql.cj.jdbc.Driver

    username:
    root

    password:
    root

Debug Jmeter

如果压测过程中遇到问题,Jmeter 支持通过 JVM_ARGS 参数指定 jvm 参数,可以在此处添加 debug 参数方便调试定位问题,如下:

1
2
# jmeter debug 模式启动
JVM_ARGS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=25005" ./jmeter.sh