业务性能测试 #
提供通用方法,由用户侧测试。
数据分片 #
数据分片测试场景。
测试目的 #
通过 DBPlusEngine-Proxy 的分片规则将数据路由分发到对应的数据库和表中。使用 sysbench 工具执行读写场景压测,从而获取分片功能的性能指标。
测试工具 #
Sysbench
测试环境 #
应用 | IP地址 | 端口 | 版本 |
---|---|---|---|
DBPlusEngine-Proxy | 192.168.xx.25 | 3307 | 1.2 |
MySQL | 192.168.xx.20 | 13306 | 8.0.29 |
MySQL | 192.168.xx.21 | 13306 | 8.0.29 |
MySQL | 192.168.xx.22 | 13306 | 8.0.29 |
MySQL | 192.168.xx.23 | 13306 | 8.0.29 |
服务器配置
条目 | 配置 |
---|---|
CPU | 48 C |
内存 | 96 G |
硬盘 | SSD 820 G |
JDK | 17.0.2 |
测试步骤 #
- 创建测试库。
mysql -utest -h192.168.xx.20 -P13306 -p
DROP DATABASE IF EXISTS sbtest;
CREATE DATABASE IF NOT EXISTS sbtest;
mysql -utest -h192.168.xx.21 -P13306 -p
DROP DATABASE IF EXISTS sbtest;
CREATE DATABASE IF NOT EXISTS sbtest;
mysql -utest -h192.168.xx.22 -P13306 -p
DROP DATABASE IF EXISTS sbtest;
CREATE DATABASE IF NOT EXISTS sbtest;
mysql -utest -h192.168.xx.23 -P13306 -p
DROP DATABASE IF EXISTS sbtest;
CREATE DATABASE IF NOT EXISTS sbtest;
创建逻辑库。
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sharding_db;
CREATE DATABASE IF NOT EXISTS sharding_db;
通过 DistSQL 关联数据源。
REGISTER STORAGE UNIT ds_0 (
HOST="192.168.xx.20",
PORT=13306,
DB="sbtest",
USER="test",
PASSWORD="test"
), ds_1 (
HOST="192.168.xx.21",
PORT=13306,
DB="sbtest",
USER="test",
PASSWORD="test"
) , ds_2 (
HOST="192.168.xx.22",
PORT=13306,
DB="sbtest",
USER="test",
PASSWORD="test"
) , ds_3 (
HOST="192.168.xx.23",
PORT=13306,
DB="sbtest",
USER="test",
PASSWORD="test"
);
通过 DistSQL 创建分片规则。
CREATE SHARDING TABLE RULE t_user (
STORAGE_UNITS(ds_0, ds_1, ds_2, ds_3),
SHARDING_COLUMN=id,TYPE(NAME="MOD",PROPERTIES("sharding-count"=10))
);
- 安装测试工具。
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
- 数据准备。
sysbench oltp_read_write --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sharding_db --tables=1 --table-size=140000000 --report-interval=5 --time=600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --range_selects=off --rand-type=uniform --auto_inc=off cleanup
sysbench oltp_read_write --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sharding_db --tables=1 --table-size=140000000 --report-interval=5 --time=600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --range_selects=off --rand-type=uniform --auto_inc=off prepare
- 压测阶段。
- 读写测试
sysbench oltp_read_write --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sharding_db --tables=1 --table-size=140000000 --report-interval=5 --time=180 --threads=200 --max-requests=0 --mysql-ignore-errors="all" --range_selects=off --rand-type=uniform --auto_inc=off run
测试结果 #
应用 | Threads | TPS | Latency99%(ms) |
---|---|---|---|
DBPlusEngine-Proxy | 256 | 10,710 | 43.39 |
MySQL | 256 | 1,827 | 475.79 |
结论:在 sharding 场景下,计算节点扩容,吞吐量可近线性提升。
该结论仅供参考,用户可以根据实际业务情况,实际场景进行测试。
监控信息 #
Sysbench ——> Proxy ——> MySQL(4) #
- Proxy
- MySQL(1)
- MySQL(2)
- MySQL(3)
- MySQL(4)
Sysbench ——> MySQL #
- MySQL
读写分离 #
读写分离测试场景。
测试目的 #
DBPlusEngine-Proxy 根据读写分离规则,将读请求和写请求分别路由至主库与从库。使用 sysbench 工具执行读写场景压测,获取读写分离功能的性能指标。
测试工具 #
Sysbench
测试环境 #
应用 | IP地址 | 端口 | 版本 |
---|---|---|---|
DBPlusEngine-Proxy | 192.168.xx.25 | 3307 | 1.2 |
MySQL | 192.168.xx.20 | 13308 | 8.0.29 |
MySQL | 192.168.xx.20 | 13309 | 8.0.29 |
服务器配置
条目 | 配置 |
---|---|
CPU | 48 C |
内存 | 96 G |
硬盘 | SSD 820 G |
JDK | 17.0.2 |
测试步骤 #
- 创建测试库。
#主库
mysql -utest -h192.168.xx.20 -P13308 -p
CREATE DATABASE IF NOT EXISTS test;
创建逻辑库。
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sphereex_demo;
CREATE DATABASE IF NOT EXISTS sphereex_demo;
通过 DistSQL 关联数据源。
use sphereex_demo;
REGISTER STORAGE UNIT write_ds (
HOST="192.168.xx.20",
PORT=13308,
DB="test",
USER="test",
PASSWORD="test"
), read_ds (
HOST="192.168.xx.20",
PORT=13309,
DB="test",
USER="test",
PASSWORD="test"
);
通过 DistSQL 创建读写分离规则。
CREATE READWRITE_SPLITTING RULE readwrite_ds (
WRITE_STORAGE_UNIT=write_ds,
READ_STORAGE_UNITS(read_ds),
TYPE(NAME="FIXED_REPLICA_RANDOM")
);
- 安装测试工具。
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
- 数据准备。
sysbench oltp_point_select --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=test --mysql-password='test' --mysql-db=sphereex_demo --tables=10 --table-size=1000000 --report-interval=10 --time=3600 --threads=256 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off cleanup
sysbench oltp_point_select --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=test --mysql-password='test' --mysql-db=sphereex_demo --tables=1 --table-size=1000000 --report-interval=10 --time=3600 --threads=256 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off prepare
- 压测阶段。
- 读写测试
sysbench oltp_read_write --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sphereex_demo --tables=1 --table-size=1000000 --report-interval=5 --time=120 --threads=200 --max-requests=0 --mysql-ignore-errors="all" --range_selects=off --rand-type=uniform --auto_inc=off run
sysbench oltp_read_write --mysql-host='192.168.xx.20' --mysql-port=13308 --mysql-user=root --mysql-password='root' --mysql-db=test --tables=1 --table-size=1000000 --report-interval=5 --time=120 --threads=200 --max-requests=0 --mysql-ignore-errors="all" --range_selects=off --rand-type=uniform --auto_inc=off run
测试结果 #
# sysbench ——> Proxy ——> MySQL
SQL statistics:
queries performed:
read: 4185530
write: 1674212
other: 837106
total: 6696848
transactions: 418553 (3485.96 per sec.)
queries: 6696848 (55775.38 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 120.0640s
total number of events: 418553
Latency (ms):
min: 7.61
avg: 57.35
max: 1035.85
95th percentile: 164.45
sum: 24005109.36
Threads fairness:
events (avg/stddev): 2092.7650/22.11
execution time (avg/stddev): 120.0255/0.01
# sysbench ——> MySQL
SQL statistics:
queries performed:
read: 2398650
write: 959460
other: 479730
total: 3837840
transactions: 239865 (1995.35 per sec.)
queries: 3837840 (31925.58 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 120.2079s
total number of events: 239865
Latency (ms):
min: 2.93
avg: 100.16
max: 1735.34
95th percentile: 282.25
sum: 24023941.63
Threads fairness:
events (avg/stddev): 1199.3250/13.23
execution time (avg/stddev): 120.1197/0.08
应用 | TPS | QPS | Latency95%(ms) |
---|---|---|---|
DBPlusEngine-Proxy | 3,485 | 55,775 | 164.45 |
MySQL | 1,995 | 31,925 | 282.25 |
结论:在读写分离场景下性能及吞吐量得到显著提升。
该结论仅供参考,用户可以根据实际业务情况,实际场景进行测试。
监控信息 #
sysbench ——> MySQL #
PRIMARY
SECONDARY
sysbench ——> Proxy ——> MySQL #
PRIMARY
SECONDARY
数据加密 #
数据加密测试场景。
测试目的 #
通过 DBPlusEngine-Proxy 根据加密规则向数据库插入数据。使用 sysbench 工具执行读写场景压测,从而获得加密功能的性能指标。
测试工具 #
Sysbench
测试环境 #
应用 | IP地址 | 端口 | 版本 |
---|---|---|---|
DBPlusEngine-Proxy | 192.168.xx.25 | 3307 | 1.2 |
MySQL | 192.168.xx.20 | 13306 | 8.0.29 |
服务器配置
条目 | 配置 |
---|---|
CPU | 48 C |
内存 | 96 G |
硬盘 | SSD 820 G |
JDK | 17.0.2 |
测试步骤 #
- 创建测试库
mysql -utest -h192.168.xx.20 -P13306 -p
DROP DATABASE IF EXISTS encrypt_db;
CREATE DATABASE IF NOT EXISTS encrypt_db;
创建逻辑库。
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sphereex_demo;
CREATE DATABASE IF NOT EXISTS sphereex_demo;
通过 DistSQL 关联数据源。
USE sphereex_demo;
REGISTER STORAGE UNIT sphereex_demo(
HOST="192.168.xx.20",
PORT=13306,
DB="encrypt_db",
USER="test",
PASSWORD="test"
);
通过 DistSQL 创建加密规则。
CREATE ENCRYPT RULE t_user (
COLUMNS(
(NAME=idCard,CIPHER=idcard_cipher,TYPE(NAME="AES",PROPERTIES("aes-key-value"="123456abc"))),
(NAME=mobile, CIPHER =mobile_cipher,TYPE(NAME="AES",PROPERTIES("aes-key-value"="123456abc")))));
- 安装测试工具
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
- 数据准备
sysbench oltp_read_only --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sphereex_demo --tables=10 --table-size=1000000 --report-interval=10 --time=3600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off cleanup
sysbench oltp_read_only --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sphereex_demo --tables=10 --table-size=1000000 --report-interval=10 --time=3600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off prepare
- 压测阶段
读写测试
sysbench oltp_read_write --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sphereex_demo --tables=1 --table-size=1000000 --report-interval=5 --time=180 --threads=200 --max-requests=0 --mysql-ignore-errors="all" --range_selects=off --rand-type=uniform --auto_inc=off run
测试结果 #
应用 | TPS | QPS |
---|---|---|
DBPlusEngine-Proxy(AES) | 11,916 | 190,654 |
DBPlusEngine-Proxy(MD5) | 12,924 | 206,779 |
DBPlusEngine-Proxy(SM4) | 10,941 | 175,058 |
DBPlusEngine-Proxy(SM3) | 13,033 | 208,894 |
DBPlusEngine-Proxy(RC4) | 10,655 | 170,479 |
MySQL | 24,766 | 396,254 |
结论:在数据加密场景下,吞吐量均有较大衰减,不同加密算法间略有差异。
该结论仅供参考,用户可以根据实际业务情况,实际场景进行测试。
监控信息 #
DBPlusEngine-Proxy(AES)
- Proxy
- MySQL
DB Plus Engine-Proxy(MD5)
- Proxy
- MySQL
DB Plus Engine-Proxy(SM4)
- Proxy
- MySQL
DB Plus Engine-Proxy(SM3)
- Proxy
- MySQL
DB Plus Engine-Proxy(RC4)
- Proxy
- MySQL
MySQL
影子库 #
影子库测试场景。
测试目的 #
分别对生产库和影子库创建数据,然后通过值匹配算法,根据路由规则分别对生产库和影子库进行请求,使用 sysbench 压测工具进行点查操作,获得影子库的具体性能指标。
测试工具 #
Sysbench
测试环境 #
应用 | IP地址 | 端口 | 版本 |
---|---|---|---|
DBPlusEngine-Proxy | 192.168.xx.25 | 3307 | 1.2 |
MySQL | 192.168.xx.20 | 13306 | 8.0.29 |
MySQL | 192.168.xx.21 | 13306 | 8.0.29 |
服务器配置
条目 | 配置 |
---|---|
CPU | 48 C |
内存 | 96 G |
硬盘 | SSD 820 G |
JDK | 17.0.2 |
测试步骤 #
- 创建测试库
创建生产库和影子库。
mysql -utest -h192.168.xx.20 -P13306 -p
DROP DATABASE IF EXISTS prod_ds;
CREATE DATABASE IF NOT EXISTS prod_ds;
mysql -utest -h192.168.xx.21 -P13306 -p
DROP DATABASE IF EXISTS shadow_ds;
CREATE DATABASE IF NOT EXISTS shadow_ds;
创建逻辑库。
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sphereex_demo;
CREATE DATABASE IF NOT EXISTS sphereex_demo;
通过 DistSQL 关联数据源。
USE sphereex_demo;
REGISTER STORAGE UNIT ds (
HOST="192.168.xx.20",
PORT=13306,
DB="prod_ds",
USER="test",
PASSWORD="test"
),ds_shadow (
HOST="192.168.xx.21",
PORT=13306,
DB="shadow_ds",
USER="test",
PASSWORD="test"
);
通过 DistSQL 创建影子库规则。
CREATE SHADOW RULE shadowDataSource(
SOURCE=ds,
SHADOW=ds_shadow,
t_user(
TYPE(NAME="VALUE_MATCH", PROPERTIES("operation"="insert","column"="status", "value"=1)),
TYPE(NAME="SIMPLE_HINT", PROPERTIES("shadow"=true)))
);
- 安装测试工具
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
对 Sysbench 的 oltp_common.lua 脚本改造,支持 Shadow 的 hint 算法。
local stmt_defs = {
point_selects = {
"SELECT c FROM sbtest%u WHERE id=? /*shadow:true*/",
t.INT},
simple_ranges = {
"SELECT c FROM sbtest%u WHERE id BETWEEN ? AND ?",
t.INT, t.INT},
sum_ranges = {
"SELECT SUM(k) FROM sbtest%u WHERE id BETWEEN ? AND ?",
t.INT, t.INT},
order_ranges = {
"SELECT c FROM sbtest%u WHERE id BETWEEN ? AND ? ORDER BY c",
t.INT, t.INT},
distinct_ranges = {
"SELECT DISTINCT c FROM sbtest%u WHERE id BETWEEN ? AND ? ORDER BY c",
t.INT, t.INT},
index_updates = {
"UPDATE sbtest%u SET k=k+1 WHERE id=? /*shadow:true*/",
t.INT},
non_index_updates = {
"UPDATE sbtest%u SET c=? WHERE id=? /*shadow:true*/",
{t.CHAR, 120}, t.INT},
deletes = {
"DELETE FROM sbtest%u WHERE id=? /*shadow:true*/",
t.INT},
inserts = {
"INSERT INTO sbtest%u (id, k, c, pad) VALUES (?, ?, ?, ?)/*shadow:true*/",
t.INT, t.INT, {t.CHAR, 120}, {t.CHAR, 60}},
}
- 数据准备
sysbench oltp_read_only --mysql-host='192.168.xx.20' --mysql-port=13306 --mysql-user=test --mysql-password='test' --mysql-db=prod_ds --tables=10 --table-size=1000000 --report-interval=10 --time=3600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off cleanup
sysbench oltp_read_only --mysql-host='192.168.xx.20' --mysql-port=13306 --mysql-user=test --mysql-password='test' --mysql-db=prod_ds --tables=10 --table-size=1000000 --report-interval=10 --time=3600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off prepare
sysbench oltp_read_only --mysql-host='192.168.xx.21' --mysql-port=13306 --mysql-user=test --mysql-password='test' --mysql-db=shadow_ds --tables=10 --table-size=1000000 --report-interval=10 --time=3600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off cleanup
sysbench oltp_read_only --mysql-host='192.168.xx.21' --mysql-port=13306 --mysql-user=test --mysql-password='test' --mysql-db=shadow_ds --tables=10 --table-size=1000000 --report-interval=10 --time=3600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off prepare
- 压测阶段
- 只读测试。
sysbench oltp_point_select --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sphereex_demo --tables=10 --table-size=1000000 --report-interval=5 --time=600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --range_selects=off --rand-type=uniform --auto_inc=off run
测试结果 #
应用 | TPS | QPS |
---|---|---|
DB Plus Engine-Proxy (No Rules) | 13,844 | 221,509 |
DB Plus Engine-Proxy(shadow) | 12,932 | 206,918 |
DB Plus Engine-Proxy(pro) | 13,099 | 209,586 |
结论:在影子库场景下,流量路由至生产库 & 影子库性能差异不大,吞吐量无明显下降。
该结论仅供参考,用户可以根据实际业务情况,实际场景进行测试。
监控信息 #
DBPlusEngine-Proxy(No Rules)
DB Plus Engine-Proxy(shadow / pro)
探针 #
探针测试场景。
测试目的 #
DBPlusEngine-Proxy 通过 plugin 结合 Prometheus/Zipkin/General log & Slow log 开启后性能损耗 或其他组件获取可观测性,使用 sysbench 压测工具进行读写操作,获取 plugin 在开启各项功能后,DBPlusEngine-Proxy 的性能情况。
测试工具 #
Sysbench
测试环境 #
应用 | IP地址 | 端口 | 版本 |
---|---|---|---|
DBPlusEngine-Proxy | 192.168.xx.25 | 3307 | 1.2 |
DBPlusEngine-Plugin | 192.168.xx.25 | - | 1.2 |
MySQL | 192.168.xx.20 | 13306 | 8.0.29 |
Prometheus | - | - | - |
Zipkin | - | - | - |
General log & Slow log | - | - | - |
服务器配置
条目 | 配置 |
---|---|
CPU | 48 C |
内存 | 96 G |
硬盘 | SSD_SATA3 820 G |
JDK | 17.0.2 |
配置 agent.yaml,开启相关监控
# Copyright © 2022,Beijing Sifei Software Technology Co., LTD.
# All Rights Reserved.
# Unauthorized copying of this file, via any medium is strictly prohibited.
# Proprietary and confidential
plugins:
logging:
BaseLogging:
props:
slow-query-log: true
long-query-time: 5000
general-query-log: true
# metrics:
# Prometheus:
# host: "0.0.0.0"
# port: 9090
# props:
# jvm-information-collector-enabled: "true"
# tracing:
# Jaeger:
# host: "localhost"
# port: 5775
# props:
# service-name: "shardingsphere"
# jaeger-sampler-type: "const"
# jaeger-sampler-param: "1"
# Zipkin:
# host: "localhost"
# port: 9411
# props:
# service-name: "shardingsphere"
# url-version: "/api/v2/spans"
# sampler-type: "const"
# sampler-param: "1"
# SkyWalking:
# props:
# opentracing-tracer-class-name: "org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
# OpenTelemetry:
# props:
# otel-resource-attributes: "service.name=shardingsphere"
# otel-traces-exporter: "zipkin"
使用 start-with-agent.sh 脚本启动 DBPlusEngine-Proxy。
测试步骤 #
- 创建测试库
mysql -utest -h192.168.xx.20 -P13306 -p
DROP DATABASE IF EXISTS agent_ds;
CREATE DATABASE IF NOT EXISTS agent_ds;
创建逻辑库。
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sphereex_demo;
CREATE DATABASE IF NOT EXISTS sphereex_demo;
通过 DistSQL 关联数据源。
USE sphereex_demo;
REGISTER STORAGE UNIT ds_0 (
HOST="192.168.xx.20",
PORT=13306,
DB="agent_ds",
USER="test",
PASSWORD="test"
);
- 安装测试工具
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
- 数据准备
sysbench oltp_read_only --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sphereex_demo --tables=10 --table-size=1000000 --report-interval=10 --time=3600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off cleanup
sysbench oltp_read_only --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sphereex_demo --tables=10 --table-size=1000000 --report-interval=10 --time=3600 --threads=128 --max-requests=0 --percentile=99 --mysql-ignore-errors="all" --rand-type=uniform --range_selects=off --auto_inc=off prepare
- 压测阶段
- 只读测试。
sysbench oltp_read_write --mysql-host='192.168.xx.25' --mysql-port=3307 --mysql-user=root --mysql-password='root' --mysql-db=sphereex_demo --tables=1 --table-size=1000000 --report-interval=5 --time=180 --threads=200 --max-requests=0 --mysql-ignore-errors="all" --range_selects=off --rand-type=uniform --auto_inc=off run
测试结果 #
应用 | TPS | QPS |
---|---|---|
DBPlusEngine-Proxy without Plugin | 13,788 | 220,611 |
DBPlusEngine-Proxy with Prometheus | 12,934 | 206,943 |
DBPlusEngine-Proxy with Prometheus & Zipkin(1) | 6,930 | 110,883 |
DBPlusEngine-Proxy with Prometheus & Zipkin(0.5) | 7,326 | 117,217 |
DBPlusEngine-Proxy with Prometheus & Zipkin(0.1) | 7,632 | 122,115 |
Agent 开 general log (不写日志) | 12,707 | 203,315 |
Agent 开 general log | 4,636 | 74,169 |
结论:在 通过探针增强可观测性 场景下,开启监控指标收集,性能略有下降。开启性能跟踪,性能衰减明显,随采样率不同稍有差异。用户可根据自身情况,选取合适的采样率及获取目标性能。
该结论仅供参考,用户可以根据实际业务情况,实际场景进行测试。
监控信息 #
DBPlusEngine-Proxy without Plugin
DBPlusEngine-Proxy with Prometheus
DBPlusEngine-Proxy with Prometheus & Zipkin(1)
DBPlusEngine-Proxy with Prometheus & Zipkin(0.5)
DBPlusEngine-Proxy with Prometheus & Zipkin(0.1)
Agent 开 general log (不写日志)
Agent 开 general log