【TIDB】使用sysbench进行压力测试
·
1.软件安装
yum -y install sysbench
................................
** Found 3 pre-existing rpmdb problem(s), 'yum check' output follows:
mysql-community-client-8.0.27-1.el7.x86_64 has missing requires of mysql-community-libs(x86-64) >= ('0', '8.0.11', None)
mysql-community-devel-8.0.27-1.el7.x86_64 has missing requires of libmysqlclient.so.21()(64bit)
mysql-community-devel-8.0.27-1.el7.x86_64 has missing requires of mysql-community-libs(x86-64) >= ('0', '8.0.11', None)
Installing : postgresql-libs-9.2.24-4.el7_8.x86_64 1/4
Installing : luajit-2.0.5-1.20220913.46e62cd.el7.x86_64 2/4
Installing : ck-0.5.2-2.el7.x86_64 3/4
Installing : sysbench-1.0.17-2.el7.x86_64 4/4
Verifying : ck-0.5.2-2.el7.x86_64 1/4
Verifying : luajit-2.0.5-1.20220913.46e62cd.el7.x86_64 2/4
Verifying : sysbench-1.0.17-2.el7.x86_64 3/4
Verifying : postgresql-libs-9.2.24-4.el7_8.x86_64 4/4
Installed:
sysbench.x86_64 0:1.0.17-2.el7
Dependency Installed:
ck.x86_64 0:0.5.2-2.el7 luajit.x86_64 0:2.0.5-1.20220913.46e62cd.el7 postgresql-libs.x86_64 0:9.2.24-4.el7_8
Complete!
[tidb@mysql1 bin]$ sysbench --version
sysbench 1.0.17
2.准备配置文件
vi config.txt
mysql-host=192.168.1.11
mysql-port=3390
mysql-user=root
mysql-password=rootroot
mysql-db=sbtest
time=60
threads=16
report-interval=10
db-driver=mysql
3.开启TIDB 的事务失败自动重试
mysql> set global tidb_disable_txn_auto_retry = off;
Query OK, 0 rows affected (0.12 sec)
mysql> show variables like 'tidb_disable_txn_auto_retry';
+-----------------------------+-------+
| Variable_name | Value |
+-----------------------------+-------+
| tidb_disable_txn_auto_retry | 1 |
+-----------------------------+-------+
1 row in set (0.00 sec)
--创建数据库
mysql> create database sbtest;
Query OK, 0 rows affected (1.53 sec)
4.准备数据
sysbench --config-file=config.txt oltp_point_select --tables=32 --table-size=100000 prepare
5.select/UPDATE/READ_ONLY 测试
[tidb@mysql1 ~]$ sysbench --config-file=config.txt.16 oltp_point_select --tables=32 --table-size=100000 run >> report-sysbench-select-16.log
[tidb@mysql1 ~]$ sysbench --config-file=config.txt.8 oltp_point_select --tables=32 --table-size=100000 run >> report-sysbench-select-8.log
[tidb@mysql1 ~]$ sysbench --config-file=config.txt.4 oltp_point_select --tables=32 --table-size=100000 run >> report-sysbench-select-4.log
SELECT 报告分析:
[tidb@mysql1 ~]$ more report-sysbench-select-4.log
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 4 tps: 1939.96 qps: 1939.96 (r/w/o: 1939.96/0.00/0.00) lat (ms,95%): 4.25 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 1318.87 qps: 1318.87 (r/w/o: 1318.87/0.00/0.00) lat (ms,95%): 7.84 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 4 tps: 878.05 qps: 878.05 (r/w/o: 878.05/0.00/0.00) lat (ms,95%): 11.24 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 4 tps: 1330.77 qps: 1330.77 (r/w/o: 1330.77/0.00/0.00) lat (ms,95%): 7.04 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 4 tps: 1715.99 qps: 1715.99 (r/w/o: 1715.99/0.00/0.00) lat (ms,95%): 5.57 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 4 tps: 1955.90 qps: 1955.90 (r/w/o: 1955.90/0.00/0.00) lat (ms,95%): 4.25 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 91403
write: 0
other: 0
total: 91403
transactions: 91403 (1523.19 per sec.)
queries: 91403 (1523.19 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 60.0062s
total number of events: 91403
Latency (ms):
min: 0.54
avg: 2.62
max: 156.25
95th percentile: 6.67
sum: 239868.90
Threads fairness:
events (avg/stddev): 22850.7500/1826.32
execution time (avg/stddev): 59.9672/0.00
[tidb@mysql1 ~]$ more report-sysbench-select-8.log
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 8
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 8 tps: 2251.06 qps: 2251.06 (r/w/o: 2251.06/0.00/0.00) lat (ms,95%): 10.65 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 8 tps: 2216.28 qps: 2216.28 (r/w/o: 2216.28/0.00/0.00) lat (ms,95%): 11.04 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 8 tps: 2298.76 qps: 2298.76 (r/w/o: 2298.76/0.00/0.00) lat (ms,95%): 10.46 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 8 tps: 2254.37 qps: 2254.37 (r/w/o: 2254.37/0.00/0.00) lat (ms,95%): 10.46 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 8 tps: 2276.38 qps: 2276.38 (r/w/o: 2276.38/0.00/0.00) lat (ms,95%): 10.46 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 8 tps: 2269.05 qps: 2269.05 (r/w/o: 2269.05/0.00/0.00) lat (ms,95%): 10.46 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 135676
write: 0
other: 0
total: 135676
transactions: 135676 (2260.56 per sec.)
queries: 135676 (2260.56 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 60.0172s
total number of events: 135676
Latency (ms):
min: 0.53
avg: 3.54
max: 88.56
95th percentile: 10.65
sum: 479890.04
Threads fairness:
events (avg/stddev): 16959.5000/828.50
execution time (avg/stddev): 59.9863/0.00
[tidb@mysql1 ~]$ more report-sysbench-select-16.log
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 16
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 16 tps: 3018.75 qps: 3018.75 (r/w/o: 3018.75/0.00/0.00) lat (ms,95%): 13.70 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 16 tps: 3039.14 qps: 3039.14 (r/w/o: 3039.14/0.00/0.00) lat (ms,95%): 13.95 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 16 tps: 3116.57 qps: 3116.57 (r/w/o: 3116.57/0.00/0.00) lat (ms,95%): 13.46 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 16 tps: 3137.55 qps: 3137.55 (r/w/o: 3137.55/0.00/0.00) lat (ms,95%): 13.22 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 16 tps: 3117.02 qps: 3117.02 (r/w/o: 3117.02/0.00/0.00) lat (ms,95%): 13.22 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 16 tps: 3044.11 qps: 3044.11 (r/w/o: 3044.11/0.00/0.00) lat (ms,95%): 13.70 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 184755
write: 0
other: 0
total: 184755
transactions: 184755 (3078.23 per sec.)
queries: 184755 (3078.23 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 60.0184s
total number of events: 184755
Latency (ms):
min: 0.55
avg: 5.20
max: 137.08
95th percentile: 13.46
sum: 959838.44
Threads fairness:
events (avg/stddev): 11547.1875/2012.84
execution time (avg/stddev): 59.9899/0.01
--4线程:1523.19 per sec
--8线程:2260.56 per sec
--16线程:3078.23 per sec
--说明16线程,每秒处理的事务数最多。16线程相比较优。
--Update index 测试命令
sysbench --config-file=config.txt.4 oltp_update_index --tables=32 --table-size=100000 run >> report-sysbench-update-4.log
sysbench --config-file=config.txt.8 oltp_update_index --tables=32 --table-size=100000 run >> report-sysbench-update-8.log
sysbench --config-file=config.txt.16 oltp_update_index --tables=32 --table-size=100000 run >> report-sysbench-update-16.log
--结果分析:
[tidb@mysql1 ~]$ more report-sysbench-update-4.log
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 4 tps: 256.44 qps: 256.44 (r/w/o: 0.00/256.14/0.30) lat (ms,95%): 24.38 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 253.61 qps: 253.61 (r/w/o: 0.00/253.41/0.20) lat (ms,95%): 25.28 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 4 tps: 257.29 qps: 257.29 (r/w/o: 0.00/257.29/0.00) lat (ms,95%): 24.38 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 4 tps: 258.61 qps: 258.61 (r/w/o: 0.00/258.51/0.10) lat (ms,95%): 23.95 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 4 tps: 261.09 qps: 261.09 (r/w/o: 0.00/260.69/0.40) lat (ms,95%): 24.38 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 4 tps: 243.71 qps: 243.71 (r/w/o: 0.00/243.61/0.10) lat (ms,95%): 28.67 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 0
write: 15301
other: 11
total: 15312
transactions: 15312 (255.13 per sec.)
queries: 15312 (255.13 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 60.0157s
total number of events: 15312
Latency (ms):
min: 2.00
avg: 15.67
max: 150.37
95th percentile: 24.83
sum: 239989.40
Threads fairness:
events (avg/stddev): 3828.0000/388.93
execution time (avg/stddev): 59.9974/0.00
[tidb@mysql1 ~]$ more report-sysbench-update-8.log
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 8
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 8 tps: 301.42 qps: 301.42 (r/w/o: 0.00/301.22/0.20) lat (ms,95%): 66.84 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 8 tps: 326.78 qps: 326.78 (r/w/o: 0.00/326.48/0.30) lat (ms,95%): 48.34 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 8 tps: 359.02 qps: 359.02 (r/w/o: 0.00/358.72/0.30) lat (ms,95%): 41.10 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 8 tps: 360.72 qps: 360.72 (r/w/o: 0.00/360.22/0.50) lat (ms,95%): 41.10 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 8 tps: 333.28 qps: 333.28 (r/w/o: 0.00/333.08/0.20) lat (ms,95%): 48.34 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 8 tps: 353.29 qps: 353.29 (r/w/o: 0.00/352.59/0.70) lat (ms,95%): 41.85 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 0
write: 20331
other: 22
total: 20353
transactions: 20353 (339.10 per sec.)
queries: 20353 (339.10 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 60.0196s
total number of events: 20353
Latency (ms):
min: 1.98
avg: 23.58
max: 215.35
95th percentile: 46.63
sum: 480023.35
Threads fairness:
events (avg/stddev): 2544.1250/484.02
execution time (avg/stddev): 60.0029/0.01
[tidb@mysql1 ~]$ more report-sysbench-update-16.log
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 16
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 16 tps: 465.69 qps: 465.69 (r/w/o: 0.00/465.19/0.50) lat (ms,95%): 65.65 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 16 tps: 459.81 qps: 459.81 (r/w/o: 0.00/458.91/0.90) lat (ms,95%): 71.83 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 16 tps: 457.49 qps: 457.49 (r/w/o: 0.00/457.09/0.40) lat (ms,95%): 65.65 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 16 tps: 469.00 qps: 469.00 (r/w/o: 0.00/468.80/0.20) lat (ms,95%): 65.65 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 16 tps: 447.61 qps: 447.61 (r/w/o: 0.00/447.31/0.30) lat (ms,95%): 69.29 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 16 tps: 447.31 qps: 447.31 (r/w/o: 0.00/446.91/0.40) lat (ms,95%): 71.83 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 0
write: 27459
other: 27
total: 27486
transactions: 27486 (457.82 per sec.)
queries: 27486 (457.82 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 60.0347s
total number of events: 27486
Latency (ms):
min: 2.28
avg: 34.93
max: 338.67
95th percentile: 68.05
sum: 960186.30
Threads fairness:
events (avg/stddev): 1717.8750/416.42
execution time (avg/stddev): 60.0116/0.01
--4线程:255.13 per sec
--8线程:339.10 per sec
--16线程:457.82 per sec
--由此可见,在当前16线程UPDATE事务较优。
--Read-only 测试命令
sysbench --config-file=config.txt.4 oltp_read_only --tables=32 --table-size=100000 run >> report-sysbench-read_only-4.log
sysbench --config-file=config.txt.8 oltp_read_only --tables=32 --table-size=100000 run >> report-sysbench-read_only-8.log
sysbench --config-file=config.txt.16 oltp_read_only --tables=32 --table-size=100000 run >> report-sysbench-read_only-16.log
--测试结果
[tidb@mysql1 ~]$ more report-sysbench-read_only-4.log
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 4
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 4 tps: 73.17 qps: 1174.69 (r/w/o: 1027.94/0.00/146.75) lat (ms,95%): 87.56 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 4 tps: 78.21 qps: 1249.69 (r/w/o: 1093.28/0.00/156.41) lat (ms,95%): 82.96 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 4 tps: 77.70 qps: 1244.22 (r/w/o: 1088.81/0.00/155.40) lat (ms,95%): 84.47 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 4 tps: 47.50 qps: 758.55 (r/w/o: 663.64/0.00/94.91) lat (ms,95%): 161.51 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 4 tps: 48.60 qps: 778.72 (r/w/o: 681.43/0.00/97.29) lat (ms,95%): 144.97 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 4 tps: 60.01 qps: 959.58 (r/w/o: 839.57/0.00/120.01) lat (ms,95%): 118.92 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 53984
write: 0
other: 7712
total: 61696
transactions: 3856 (64.21 per sec.)
queries: 61696 (1027.29 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 60.0555s
total number of events: 3856
Latency (ms):
min: 15.45
avg: 62.27
max: 439.16
95th percentile: 121.08
sum: 240122.80
Threads fairness:
events (avg/stddev): 964.0000/23.28
execution time (avg/stddev): 60.0307/0.01
[tidb@mysql1 ~]$ more report-sysbench-read_only-8.log
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 8
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 8 tps: 82.08 qps: 1319.14 (r/w/o: 1154.19/0.00/164.96) lat (ms,95%): 204.11 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 8 tps: 84.91 qps: 1360.09 (r/w/o: 1190.28/0.00/169.81) lat (ms,95%): 186.54 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 8 tps: 85.60 qps: 1367.22 (r/w/o: 1196.12/0.00/171.10) lat (ms,95%): 193.38 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 8 tps: 78.20 qps: 1254.14 (r/w/o: 1097.65/0.00/156.49) lat (ms,95%): 207.82 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 8 tps: 90.90 qps: 1453.13 (r/w/o: 1271.44/0.00/181.69) lat (ms,95%): 176.73 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 8 tps: 92.20 qps: 1474.57 (r/w/o: 1290.06/0.00/184.51) lat (ms,95%): 176.73 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 72058
write: 0
other: 10294
total: 82352
transactions: 5147 (85.65 per sec.)
queries: 82352 (1370.36 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 60.0936s
total number of events: 5147
Latency (ms):
min: 26.97
avg: 93.32
max: 414.15
95th percentile: 189.93
sum: 480336.12
Threads fairness:
events (avg/stddev): 643.3750/106.90
execution time (avg/stddev): 60.0420/0.03
[tidb@mysql1 ~]$ more report-sysbench-read_only-16.log
sysbench 1.0.17 (using system LuaJIT 2.0.4)
Running the test with following options:
Number of threads: 16
Report intermediate results every 10 second(s)
Initializing random number generator from current time
Initializing worker threads...
Threads started!
[ 10s ] thds: 16 tps: 105.37 qps: 1702.44 (r/w/o: 1490.10/0.00/212.34) lat (ms,95%): 297.92 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 16 tps: 107.79 qps: 1720.07 (r/w/o: 1504.48/0.00/215.58) lat (ms,95%): 297.92 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 16 tps: 107.29 qps: 1721.44 (r/w/o: 1506.96/0.00/214.48) lat (ms,95%): 297.92 err/s: 0.00 reconn/s: 0.00
[ 40s ] thds: 16 tps: 107.62 qps: 1717.15 (r/w/o: 1501.80/0.00/215.34) lat (ms,95%): 282.25 err/s: 0.00 reconn/s: 0.00
[ 50s ] thds: 16 tps: 105.60 qps: 1691.79 (r/w/o: 1480.60/0.00/211.20) lat (ms,95%): 292.60 err/s: 0.00 reconn/s: 0.00
[ 60s ] thds: 16 tps: 108.70 qps: 1736.67 (r/w/o: 1519.27/0.00/217.40) lat (ms,95%): 287.38 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 90160
write: 0
other: 12880
total: 103040
transactions: 6440 (107.07 per sec.)
queries: 103040 (1713.19 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 60.1433s
total number of events: 6440
Latency (ms):
min: 31.30
avg: 149.25
max: 512.12
95th percentile: 292.60
sum: 961141.70
Threads fairness:
events (avg/stddev): 402.5000/69.74
execution time (avg/stddev): 60.0714/0.03
--只读测试:
---4线程:查询:1027.29 per sec
---8线程:查询:1370.36 per sec
---16线程:查询:1713.19 per sec
--由此可见,16线程的情况下,读取的查询次数最多。
--由此可将,当前系统:16线程在SELECT,UPDATE,read_only 时均是最优的。
更多推荐
所有评论(0)