Business Performance Test #
Provide a universal method for the user-end test.
Data Sharding #
Data sharding test scenarios.
Test Objective #
Use DBPlusEngine-Proxy’s sharding rules to route and distribute data to corresponding databases and tables. Also use the sysbench tool to carry out stress testing on read/write scenarios, to obtain the performance indicator of the sharding feature.
Test Tool #
Sysbench
Test Environment #
Application | IP Address | Port | Version |
---|---|---|---|
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 |
Server Configuration
Item | Configuration |
---|---|
CPU | 48 C |
Memory | 96 G |
Hard Disk | SSD 820 G |
JDK | 17.0.2 |
Test Procedure #
- Create a test database.
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;
Create a logical database.
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sharding_db;
CREATE DATABASE IF NOT EXISTS sharding_db;
Associate the data source through 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"
);
Create sharding rules through 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))
);
- Install test tools.
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
- Obtain data.
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
- Carry out stress testing.
- Read/write Test.
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
Test Results #
Application | Threads | TPS | Latency99%(ms) |
---|---|---|---|
DBPlusEngine-Proxy | 256 | 10,710 | 43.39 |
MySQL | 256 | 1,827 | 475.79 |
Result: under sharding scenarios, scaling out computing nodes can improve the throughput linearly.
The result is for reference only. Users can carry out a test based on actual business scenarios.
Monitoring Information #
Sysbench ——> Proxy ——> MySQL(4) #
- Proxy
- MySQL(1)
- MySQL(2)
- MySQL(3)
- MySQL(4)
Sysbench ——> MySQL #
- MySQL
Read/Write Splitting #
Read/Write Test Scenario.
Test Objective #
According to read/write splitting rules, DBPlusEngine-Proxy routes the read and write requests into the primary database and secondary database respectively. We use the sysbench tool to carry out stress testing on read/write scenarios, to obtain the performance indicator of the read/write splitting feature.
Test Tool #
Sysbench
Test Environment #
Application | IP Address | Port | Version |
---|---|---|---|
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 |
Server Configuration
Item | Configuration |
---|---|
CPU | 48 C |
Memory | 96 G |
Hard Disk | SSD 820 G |
JDK | 17.0.2 |
Test Procedure #
- Create a test database.
#Primary database
mysql -utest -h192.168.xx.20 -P13308 -p
CREATE DATABASE IF NOT EXISTS test;
Create a logical database.
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sphereex_demo;
CREATE DATABASE IF NOT EXISTS sphereex_demo;
Associate the data source through 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"
);
Create read/write splitting rules through DistSQL.
CREATE READWRITE_SPLITTING RULE readwrite_ds (
WRITE_STORAGE_UNIT=write_ds,
READ_STORAGE_UNITS(read_ds),
TYPE(NAME="FIXED_REPLICA_RANDOM")
);
- Install test tools.
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
- Obtain data.
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
- Carry out stress testing.
- Read/Write Test
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
Test Result #
# 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
Application | TPS | QPS | Latency95%(ms) |
---|---|---|---|
DBPlusEngine-Proxy | 3,485 | 55,775 | 164.45 |
MySQL | 1,995 | 31,925 | 282.25 |
Result: under read/write splitting scenarios, the performance and throughput are improved significantly.
The result is for reference only. Users can carry out a test based on actual business scenarios.
Monitoring Information #
sysbench ——> MySQL #
PRIMARY
SECONDARY
sysbench ——> Proxy ——> MySQL #
PRIMARY
SECONDARY
Data Encryption #
Data Encryption Test Scenario.
Test Objective #
According to the encryption rules, DBPlusEngine-Proxy inserts data into databases. We use the sysbench tool to carry out stress testing under read/write scenarios, to obtain the performance indicator of the encryption feature.
Test Tool #
Sysbench
Test Environment #
Application | IP Address | Port | Version |
---|---|---|---|
DBPlusEngine-Proxy | 192.168.xx.25 | 3307 | 1.2 |
MySQL | 192.168.xx.20 | 13306 | 8.0.29 |
Server Configuration
Item | Configuration |
---|---|
CPU | 48 C |
Memory | 96 G |
Hard Disk | SSD 820 G |
JDK | 17.0.2 |
Test Procedure #
- Create a test database.
mysql -utest -h192.168.xx.20 -P13306 -p
DROP DATABASE IF EXISTS encrypt_db;
CREATE DATABASE IF NOT EXISTS encrypt_db;
Create a logical database.
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sphereex_demo;
CREATE DATABASE IF NOT EXISTS sphereex_demo;
Associate the data source through DistSQL.
USE sphereex_demo;
REGISTER STORAGE UNIT sphereex_demo(
HOST="192.168.xx.20",
PORT=13306,
DB="encrypt_db",
USER="test",
PASSWORD="test"
);
Create encryption rules through 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")))));
- Install test tools.
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
- Obtain data.
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
- Carry out stress testing.
Read/Write Test
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
Test Result #
Application | 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 |
Result: under data encryption scenarios, the throughput decreased notably, and there are slight differences when using different encryption algorithms.
The result is for reference only. Users can carry out a test based on actual business scenarios.
Monitoring Information #
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
Shadow Database #
Shadow Database Test Scenario.
Test Objective #
Create data for the production database and the shadow database. According to routing rules, make requests for the production database and the shadow database respectively by matching an algorithm for values. We use the sysbench stress testing tool to carry out point queries so as to obtain the performance indicator of the shadow DB feature.
Test Tool #
Sysbench
Test Environment #
Application | IP Address | Port | Version |
---|---|---|---|
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 |
Server Configuration
Item | Configuration |
---|---|
CPU | 48 C |
Memory | 96 G |
Hard Disk | SSD 820 G |
JDK | 17.0.2 |
Test Procedure #
- Create a test database.
Create a production database and a shadow database.
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;
Create a logical database.
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sphereex_demo;
CREATE DATABASE IF NOT EXISTS sphereex_demo;
Associate the data source through 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"
);
Create shadow DB rules through 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)))
);
- Install test tools.
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
Transform Sysbench’s oltp_common.lua scripts. The Shadow’s hint algorithm is supported.
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}},
}
- Obtain data.
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
- Carry out stress testing.
- Read-only Test.
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
Test Result #
Application | 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 |
Result: under shadow database scenarios, there’s little difference when routing traffic to a production database or a shadow database. Throughput only decreases slightly.
The result is for reference only. Users can carry out a test based on actual business scenarios.
Monitoring Information #
DBPlusEngine-Proxy(No Rules)
DB Plus Engine-Proxy(shadow / pro)
Probe #
Probe Test Scenario.
Test Objective #
DBPlusEngine-Proxy can obtain observability through performance loss after integrating with Prometheus/Zipkin/General log & Slow log by plugins, or integrating with other components by plugins. We use the sysbench stress testing tool to perform read/write operations, to obtain the performance of DBPlusEngine-Proxy after the plugin has enabled features.
Test Tool #
Sysbench
Test Environment #
Application | IP Address | Port | Version |
---|---|---|---|
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 | - | - | - |
Server Configuration
Item | Configuration |
---|---|
CPU | 48 C |
Memory | 96 G |
Hard Disk | SSD_SATA3 820 G |
JDK | 17.0.2 |
Configure agent.yaml and enable related monitoring.
# 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"
Use start-with-agent.sh
scripts to start DBPlusEngine-Proxy.
Test Procedure #
- Create a test database.
mysql -utest -h192.168.xx.20 -P13306 -p
DROP DATABASE IF EXISTS agent_ds;
CREATE DATABASE IF NOT EXISTS agent_ds;
Create a logical database.
mysql -uroot -h192.168.xx.25 -P3307 -proot
DROP DATABASE IF EXISTS sphereex_demo;
CREATE DATABASE IF NOT EXISTS sphereex_demo;
Associate the data source through DistSQL.
USE sphereex_demo;
REGISTER STORAGE UNIT ds_0 (
HOST="192.168.xx.20",
PORT=13306,
DB="agent_ds",
USER="test",
PASSWORD="test"
);
- Install test tools.
tar -xzvf sysbench-1.0.20.tar.gz -C /usr/local
cd /usr/local/sysbench-1.0.20
./autogen.sh
./configure
make && make install
- Obtain data.
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
- Carry out stress testing.
- Read-only Test
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
Test Result #
Application | 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 enabled general log (no writing logs) | 12,707 | 203,315 |
Agent enabled general log | 4,636 | 74,169 |
Result: when using a probe to improve observability, the performance slightly decreases after collecting the monitoring indicators. After tracing the performance, it can be seen that the performance decreases notably, which is slightly different facing different sampling rates.
The result is for reference only. Users can carry out a test based on actual business scenarios.
Monitoring Information #
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 enabled general log (no writing logs)
Agent enabled general log