Logo
Business Performance Test

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 #

ApplicationIP AddressPortVersion
DBPlusEngine-Proxy192.168.xx.2533071.2
MySQL192.168.xx.20133068.0.29
MySQL192.168.xx.21133068.0.29
MySQL192.168.xx.22133068.0.29
MySQL192.168.xx.23133068.0.29

Server Configuration

ItemConfiguration
CPU48 C
Memory96 G
Hard DiskSSD 820 G
JDK17.0.2

Test Procedure #

  1. 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))
);
  1. 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
  1. 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        
  1. 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 #

ApplicationThreadsTPSLatency99%(ms)
DBPlusEngine-Proxy25610,71043.39
MySQL2561,827475.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 #

ApplicationIP AddressPortVersion
DBPlusEngine-Proxy192.168.xx.2533071.2
MySQL192.168.xx.20133088.0.29
MySQL192.168.xx.20133098.0.29

Server Configuration

ItemConfiguration
CPU48 C
Memory96 G
Hard DiskSSD 820 G
JDK17.0.2

Test Procedure #

  1. 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")
);
  1. 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                      
  1. 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              
  1. 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
ApplicationTPSQPSLatency95%(ms)
DBPlusEngine-Proxy3,48555,775164.45
MySQL1,99531,925282.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 #

ApplicationIP AddressPortVersion
DBPlusEngine-Proxy192.168.xx.2533071.2
MySQL192.168.xx.20133068.0.29

Server Configuration

ItemConfiguration
CPU48 C
Memory96 G
Hard DiskSSD 820 G
JDK17.0.2

Test Procedure #

  1. 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")))));
  1. 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
  1. 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
  1. 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 #

ApplicationTPSQPS
DBPlusEngine-Proxy(AES)11,916190,654
DBPlusEngine-Proxy(MD5)12,924206,779
DBPlusEngine-Proxy(SM4)10,941175,058
DBPlusEngine-Proxy(SM3)13,033208,894
DBPlusEngine-Proxy(RC4)10,655170,479
MySQL24,766396,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 #

ApplicationIP AddressPortVersion
DBPlusEngine-Proxy192.168.xx.2533071.2
MySQL192.168.xx.20133068.0.29
MySQL192.168.xx.21133068.0.29

Server Configuration

ItemConfiguration
CPU48 C
Memory96 G
Hard DiskSSD 820 G
JDK17.0.2

Test Procedure #

  1. 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)))
);
  1. 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}},
}
  1. 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
  1. 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 #

ApplicationTPSQPS
DB Plus Engine-Proxy (No Rules)13,844221,509
DB Plus Engine-Proxy(shadow)12,932206,918
DB Plus Engine-Proxy(pro)13,099209,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 #

ApplicationIP AddressPortVersion
DBPlusEngine-Proxy192.168.xx.2533071.2
DBPlusEngine-Plugin192.168.xx.25-1.2
MySQL192.168.xx.20133068.0.29
Prometheus---
Zipkin---
General log & Slow log---

Server Configuration

ItemConfiguration
CPU48 C
Memory96 G
Hard DiskSSD_SATA3 820 G
JDK17.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 #

  1. 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"
);
  1. 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
  1. 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
  1. 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 #

ApplicationTPSQPS
DBPlusEngine-Proxy without Plugin13,788220,611
DBPlusEngine-Proxy with Prometheus12,934206,943
DBPlusEngine-Proxy with Prometheus & Zipkin(1)6,930110,883
DBPlusEngine-Proxy with Prometheus & Zipkin(0.5)7,326117,217
DBPlusEngine-Proxy with Prometheus & Zipkin(0.1)7,632122,115
Agent enabled general log (no writing logs)12,707203,315
Agent enabled general log4,63674,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