sysbench壓測自裝MySQL資料庫
壓測準備
測試機器
2vCPUs | 4GB | s6.large.2 CentOS 7.6 64bit
建立測試庫
create database test_db
character set utf8mb4 collate utf8mb4_bin;
下載sysbench
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
sysbench --version
sysbench 1.0.19
準備測試表
sysbench //基於mysql的驅動去連線mysql資料庫 --db-driver=mysql //連續訪問300秒 --time=300 //10個執行緒模擬併發訪問 --threads=10 //每隔1秒輸出一下壓測情況 --report-interval=1 //本機 --mysql-host=127.0.0.1 //埠號:3306 --mysql-port=3306 //測試使用者 --mysql-user=root //測試密碼 --mysql-password=******* //測試資料庫 --mysql-db=test_db //模擬新建20個表 --tables=20 //100萬條資料 執行oltp資料庫的讀寫測試 --table_size=1000000 oltp_read_write //參照這個命令的設定去構造出來我們需要的資料庫裡的資料 //自動建立20個測試表,每個表裡建立100萬條測試資料 --db-ps-mode=disable prepare
執行命令之後:
Initializing worker threads... Creating table 'sbtest9'... Creating table 'sbtest1'... Creating table 'sbtest4'... Creating table 'sbtest2'... Creating table 'sbtest5'... Creating table 'sbtest7'... Creating table 'sbtest6'... Creating table 'sbtest3'... Creating table 'sbtest8'... Creating table 'sbtest10'... Inserting 1000000 records into 'sbtest9' Inserting 1000000 records into 'sbtest4' Inserting 1000000 records into 'sbtest5' Inserting 1000000 records into 'sbtest8' Inserting 1000000 records into 'sbtest6' Inserting 1000000 records into 'sbtest2' Inserting 1000000 records into 'sbtest7' Inserting 1000000 records into 'sbtest1' Inserting 1000000 records into 'sbtest10' Inserting 1000000 records into 'sbtest3'
測試指標
thds: 10 tps: 489.10 qps: 9735.09 (r/w/o: 6817.46/1939.42/978.21) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00
- thds 壓測執行緒數
- tps 每秒事務數
- qps 每秒請求數
- (r/w/o) 每秒的請求數中讀請求個數/寫請求個數/其他請求個數
- lat(ms,95%) 95% 的請求延遲都在多少以下
- err/s 錯誤數
- reconn/s 重連數
SQL statistics:
queries performed:
read: 1785882
write: 510252
other: 255126
total: 2551260
transactions: 127563 (425.09 per sec.)
queries: 2551260 (8501.77 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0839s
total number of events: 127563
Latency (ms):
min: 4.24
avg: 23.52
max: 1087.40
95th percentile: 69.29
sum: 2999819.79
Threads fairness:
events (avg/stddev): 12756.3000/52.74
execution time (avg/stddev): 299.9820/0.00
- 300s內執行了178萬讀請求,50萬寫請求,25萬其他請求,總共執行了255萬請求。
- 總共執行事務12萬,每秒425次事務
- 總共執行255萬次請求,每秒8500次請求
- 總用時:300s,127563次事務
- 延遲最小 4.24ms
- 平均請求 23.52ms
- 延遲最大 1087ms
- 95% 的請求延遲在69ms
開始測試
綜合TPS,oltp_read_write
測試命令
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run
測試資料
[ 261s ] thds: 10 tps: 489.10 qps: 9735.09 (r/w/o: 6817.46/1939.42/978.21) lat (ms,95%): 62.19 err/s: 0.00 reconn/s: 0.00
[ 262s ] thds: 10 tps: 398.03 qps: 8034.62 (r/w/o: 5613.43/1625.12/796.06) lat (ms,95%): 74.46 err/s: 0.00 reconn/s: 0.00
[ 263s ] thds: 10 tps: 325.93 qps: 6459.53 (r/w/o: 4532.97/1275.71/650.85) lat (ms,95%): 150.29 err/s: 0.00 reconn/s: 0.00
[ 264s ] thds: 10 tps: 499.17 qps: 9961.43 (r/w/o: 6975.40/1986.68/999.34) lat (ms,95%): 51.94 err/s: 0.00 reconn/s: 0.00
[ 265s ] thds: 10 tps: 431.96 qps: 8644.16 (r/w/o: 6038.42/1741.83/863.92) lat (ms,95%): 68.05 err/s: 0.00 reconn/s: 0.00
[ 266s ] thds: 10 tps: 433.91 qps: 8723.24 (r/w/o: 6108.77/1747.65/866.83) lat (ms,95%): 78.60 err/s: 0.00 reconn/s: 0.00
[ 267s ] thds: 10 tps: 450.07 qps: 8997.40 (r/w/o: 6302.98/1793.28/901.14) lat (ms,95%): 64.47 err/s: 0.00 reconn/s: 0.00
測試結果
SQL statistics:
queries performed:
read: 1785882
write: 510252
other: 255126
total: 2551260
transactions: 127563 (425.09 per sec.)
queries: 2551260 (8501.77 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0839s
total number of events: 127563
Latency (ms):
min: 4.24
avg: 23.52
max: 1087.40
95th percentile: 69.29
sum: 2999819.79
Threads fairness:
events (avg/stddev): 12756.3000/52.74
execution time (avg/stddev): 299.9820/0.00
只讀效能,oltp_read_only
測試命令
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_only --db-ps-mode=disable run
測試資料
[ 199s ] thds: 10 tps: 867.92 qps: 13910.67 (r/w/o: 12174.84/0.00/1735.83) lat (ms,95%): 13.95 err/s: 0.00 reconn/s: 0.00
[ 200s ] thds: 10 tps: 907.19 qps: 14500.97 (r/w/o: 12686.60/0.00/1814.37) lat (ms,95%): 14.46 err/s: 0.00 reconn/s: 0.00
[ 201s ] thds: 10 tps: 913.33 qps: 14610.29 (r/w/o: 12783.63/0.00/1826.66) lat (ms,95%): 14.46 err/s: 0.00 reconn/s: 0.00
[ 202s ] thds: 10 tps: 904.80 qps: 14486.87 (r/w/o: 12677.26/0.00/1809.61) lat (ms,95%): 14.21 err/s: 0.00 reconn/s: 0.00
[ 203s ] thds: 10 tps: 895.75 qps: 14329.00 (r/w/o: 12537.50/0.00/1791.50) lat (ms,95%): 12.75 err/s: 0.00 reconn/s: 0.00
[ 204s ] thds: 10 tps: 920.16 qps: 14715.57 (r/w/o: 12877.25/0.00/1838.32) lat (ms,95%): 12.52 err/s: 0.00 reconn/s: 0.00
[ 205s ] thds: 10 tps: 913.00 qps: 14635.93 (r/w/o: 12807.94/0.00/1827.99) lat (ms,95%): 14.21 err/s: 0.00 reconn/s: 0.00
[ 206s ] thds: 10 tps: 908.77 qps: 14509.38 (r/w/o: 12692.83/0.00/1816.55) lat (ms,95%): 14.21 err/s: 0.00 reconn/s: 0.00
測試結果
SQL statistics:
queries performed:
read: 3682476
write: 0
other: 526068
total: 4208544
transactions: 263034 (876.75 per sec.)
queries: 4208544 (14027.94 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0102s
total number of events: 263034
Latency (ms):
min: 1.66
avg: 11.40
max: 183.17
95th percentile: 15.27
sum: 2999435.93
Threads fairness:
events (avg/stddev): 26303.4000/298.92
execution time (avg/stddev): 299.9436/0.00
刪除效能,oltp_delete
測試命令
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_delete --db-ps-mode=disable run
測試資料
[ 183s ] thds: 10 tps: 3732.66 qps: 3732.66 (r/w/o: 0.00/1143.90/2588.76) lat (ms,95%): 7.56 err/s: 0.00 reconn/s: 0.00
[ 184s ] thds: 10 tps: 3741.75 qps: 3741.75 (r/w/o: 0.00/1129.92/2611.82) lat (ms,95%): 8.28 err/s: 0.00 reconn/s: 0.00
[ 185s ] thds: 10 tps: 4053.34 qps: 4053.34 (r/w/o: 0.00/1261.11/2792.23) lat (ms,95%): 7.70 err/s: 0.00 reconn/s: 0.00
[ 186s ] thds: 10 tps: 3831.98 qps: 3831.98 (r/w/o: 0.00/1133.99/2697.98) lat (ms,95%): 8.43 err/s: 0.00 reconn/s: 0.00
[ 187s ] thds: 10 tps: 3996.16 qps: 3996.16 (r/w/o: 0.00/1188.05/2808.11) lat (ms,95%): 7.56 err/s: 0.00 reconn/s: 0.00
[ 188s ] thds: 10 tps: 4178.94 qps: 4178.94 (r/w/o: 0.00/1249.98/2928.95) lat (ms,95%): 7.17 err/s: 0.00 reconn/s: 0.00
[ 189s ] thds: 10 tps: 3654.09 qps: 3654.09 (r/w/o: 0.00/1054.03/2600.06) lat (ms,95%): 8.90 err/s: 0.00 reconn/s: 0.00
[ 190s ] thds: 10 tps: 3700.97 qps: 3700.97 (r/w/o: 0.00/1120.99/2579.98) lat (ms,95%): 8.43 err/s: 0.00 reconn/s: 0.00
測試結果
SQL statistics:
queries performed:
read: 0
write: 366172
other: 552067
total: 918239
transactions: 918239 (3060.73 per sec.)
queries: 918239 (3060.73 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0048s
total number of events: 918239
Latency (ms):
min: 0.04
avg: 3.27
max: 586.35
95th percentile: 9.39
sum: 2999188.03
Threads fairness:
events (avg/stddev): 91823.9000/400.61
execution time (avg/stddev): 299.9188/0.00
更新索引欄位效能,oltp_update_index
測試命令
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_update_index --db-ps-mode=disable run
測試資料
[ 222s ] thds: 10 tps: 4390.82 qps: 4390.82 (r/w/o: 0.00/968.18/3422.64) lat (ms,95%): 7.56 err/s: 0.00 reconn/s: 0.00
[ 223s ] thds: 10 tps: 4451.01 qps: 4451.01 (r/w/o: 0.00/1029.23/3421.78) lat (ms,95%): 7.98 err/s: 0.00 reconn/s: 0.00
[ 224s ] thds: 10 tps: 4508.21 qps: 4508.21 (r/w/o: 0.00/1062.05/3446.16) lat (ms,95%): 7.56 err/s: 0.00 reconn/s: 0.00
[ 225s ] thds: 10 tps: 3429.97 qps: 3429.97 (r/w/o: 0.00/811.76/2618.21) lat (ms,95%): 10.46 err/s: 0.00 reconn/s: 0.00
[ 226s ] thds: 10 tps: 4667.34 qps: 4667.34 (r/w/o: 0.00/1093.31/3574.03) lat (ms,95%): 7.30 err/s: 0.00 reconn/s: 0.00
[ 227s ] thds: 10 tps: 4238.59 qps: 4238.59 (r/w/o: 0.00/990.90/3247.68) lat (ms,95%): 6.79 err/s: 0.00 reconn/s: 0.00
[ 228s ] thds: 10 tps: 4300.49 qps: 4300.49 (r/w/o: 0.00/1092.87/3207.62) lat (ms,95%): 7.43 err/s: 0.00 reconn/s: 0.00
[ 229s ] thds: 10 tps: 4447.64 qps: 4447.64 (r/w/o: 0.00/1079.15/3368.48) lat (ms,95%): 7.70 err/s: 0.00 reconn/s: 0.00
測試結果
SQL statistics:
queries performed:
read: 0
write: 295467
other: 936875
total: 1232342
transactions: 1232342 (4107.59 per sec.)
queries: 1232342 (4107.59 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0140s
total number of events: 1232342
Latency (ms):
min: 0.04
avg: 2.43
max: 1148.12
95th percentile: 7.70
sum: 2998912.79
Threads fairness:
events (avg/stddev): 123234.2000/607.91
execution time (avg/stddev): 299.8913/0.00
更新非索引欄位效能,oltp_update_non_index
測試命令
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_update_non_index --db-ps-mode=disable run
測試資料
[ 215s ] thds: 10 tps: 4941.69 qps: 4941.69 (r/w/o: 0.00/1194.92/3746.76) lat (ms,95%): 6.55 err/s: 0.00 reconn/s: 0.00
[ 216s ] thds: 10 tps: 4107.03 qps: 4107.03 (r/w/o: 0.00/992.77/3114.26) lat (ms,95%): 7.98 err/s: 0.00 reconn/s: 0.00
[ 217s ] thds: 10 tps: 4584.08 qps: 4585.08 (r/w/o: 0.00/1044.25/3540.83) lat (ms,95%): 8.13 err/s: 0.00 reconn/s: 0.00
[ 218s ] thds: 10 tps: 4947.58 qps: 4946.58 (r/w/o: 0.00/1200.14/3746.44) lat (ms,95%): 6.21 err/s: 0.00 reconn/s: 0.00
[ 219s ] thds: 10 tps: 5302.95 qps: 5302.95 (r/w/o: 0.00/1248.99/4053.96) lat (ms,95%): 6.09 err/s: 0.00 reconn/s: 0.00
[ 220s ] thds: 10 tps: 4318.10 qps: 4318.10 (r/w/o: 0.00/1063.02/3255.08) lat (ms,95%): 6.79 err/s: 0.00 reconn/s: 0.00
[ 221s ] thds: 10 tps: 5652.77 qps: 5652.77 (r/w/o: 0.00/1363.94/4288.83) lat (ms,95%): 7.30 err/s: 0.00 reconn/s: 0.00
[ 222s ] thds: 10 tps: 4128.77 qps: 4128.77 (r/w/o: 0.00/973.95/3154.83) lat (ms,95%): 9.56 err/s: 0.00 reconn/s: 0.00
測試結果
SQL statistics:
queries performed:
read: 0
write: 322361
other: 1025120
total: 1347481
transactions: 1347481 (4491.48 per sec.)
queries: 1347481 (4491.48 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0065s
total number of events: 1347481
Latency (ms):
min: 0.05
avg: 2.23
max: 784.62
95th percentile: 7.04
sum: 2998814.89
Threads fairness:
events (avg/stddev): 134748.1000/644.68
execution time (avg/stddev): 299.8815/0.00
插入效能,oltp_insert
測試命令
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_insert --db-ps-mode=disable run
測試資料
[ 230s ] thds: 10 tps: 1655.99 qps: 1655.99 (r/w/o: 0.00/1655.99/0.00) lat (ms,95%): 11.24 err/s: 0.00 reconn/s: 0.00
[ 231s ] thds: 10 tps: 1745.25 qps: 1745.25 (r/w/o: 0.00/1745.25/0.00) lat (ms,95%): 10.46 err/s: 0.00 reconn/s: 0.00
[ 232s ] thds: 10 tps: 1669.10 qps: 1669.10 (r/w/o: 0.00/1669.10/0.00) lat (ms,95%): 12.75 err/s: 0.00 reconn/s: 0.00
[ 233s ] thds: 10 tps: 1676.79 qps: 1676.79 (r/w/o: 0.00/1676.79/0.00) lat (ms,95%): 11.24 err/s: 0.00 reconn/s: 0.00
[ 234s ] thds: 10 tps: 1721.36 qps: 1721.36 (r/w/o: 0.00/1721.36/0.00) lat (ms,95%): 11.04 err/s: 0.00 reconn/s: 0.00
[ 235s ] thds: 10 tps: 1639.59 qps: 1639.59 (r/w/o: 0.00/1639.59/0.00) lat (ms,95%): 11.87 err/s: 0.00 reconn/s: 0.00
[ 236s ] thds: 10 tps: 1800.01 qps: 1800.01 (r/w/o: 0.00/1800.01/0.00) lat (ms,95%): 9.91 err/s: 0.00 reconn/s: 0.00
[ 237s ] thds: 10 tps: 1674.80 qps: 1674.80 (r/w/o: 0.00/1674.80/0.00) lat (ms,95%): 9.91 err/s: 0.00 reconn/s: 0.00
測試結果
SQL statistics:
queries performed:
read: 0
write: 527182
other: 0
total: 527182
transactions: 527182 (1757.22 per sec.)
queries: 527182 (1757.22 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0081s
total number of events: 527182
Latency (ms):
min: 1.68
avg: 5.69
max: 525.61
95th percentile: 10.65
sum: 2998239.06
Threads fairness:
events (avg/stddev): 52718.2000/60.72
execution time (avg/stddev): 299.8239/0.00
寫入效能,oltp_write_only
測試命令
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='******' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_write_only --db-ps-mode=disable run
測試資料
[ 86s ] thds: 10 tps: 1112.14 qps: 6636.85 (r/w/o: 0.00/2819.36/3817.49) lat (ms,95%): 42.61 err/s: 0.00 reconn/s: 0.00
[ 87s ] thds: 10 tps: 1122.80 qps: 6736.82 (r/w/o: 0.00/2850.50/3886.32) lat (ms,95%): 27.66 err/s: 0.00 reconn/s: 0.00
[ 88s ] thds: 10 tps: 1226.66 qps: 7369.96 (r/w/o: 0.00/3021.16/4348.79) lat (ms,95%): 19.29 err/s: 0.00 reconn/s: 0.00
[ 89s ] thds: 10 tps: 645.13 qps: 3896.80 (r/w/o: 0.00/1665.34/2231.46) lat (ms,95%): 73.13 err/s: 0.00 reconn/s: 0.00
[ 90s ] thds: 10 tps: 1062.22 qps: 6373.30 (r/w/o: 0.00/2721.55/3651.74) lat (ms,95%): 43.39 err/s: 0.00 reconn/s: 0.00
[ 91s ] thds: 10 tps: 984.95 qps: 5870.71 (r/w/o: 0.00/2502.88/3367.84) lat (ms,95%): 59.99 err/s: 0.00 reconn/s: 0.00
[ 92s ] thds: 10 tps: 1144.76 qps: 6870.55 (r/w/o: 0.00/2963.37/3907.17) lat (ms,95%): 22.69 err/s: 0.00 reconn/s: 0.00
[ 93s ] thds: 10 tps: 1018.26 qps: 6146.56 (r/w/o: 0.00/2684.68/3461.88) lat (ms,95%): 44.98 err/s: 0.00 reconn/s: 0.00
測試結果
SQL statistics:
queries performed:
read: 0
write: 803503
other: 926111
total: 1729614
transactions: 288269 (960.86 per sec.)
queries: 1729614 (5765.13 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 300.0115s
total number of events: 288269
Latency (ms):
min: 1.95
avg: 10.41
max: 413.10
95th percentile: 44.17
sum: 2999460.47
Threads fairness:
events (avg/stddev): 28826.9000/33.90
execution time (avg/stddev): 299.9460/0.00
測試完成-CleanUp
sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='**' --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable cleanup
Dropping table 'sbtest1'...
Dropping table 'sbtest2'...
Dropping table 'sbtest3'...
Dropping table 'sbtest4'...
Dropping table 'sbtest5'...
Dropping table 'sbtest6'...
Dropping table 'sbtest7'...
Dropping table 'sbtest8'...
Dropping table 'sbtest9'...
Dropping table 'sbtest10'...
Dropping table 'sbtest11'...
Dropping table 'sbtest12'...
Dropping table 'sbtest13'...
Dropping table 'sbtest14'...
Dropping table 'sbtest15'...
Dropping table 'sbtest16'...
Dropping table 'sbtest17'...
Dropping table 'sbtest18'...
Dropping table 'sbtest19'...
Dropping table 'sbtest20'...
測試彙總
condition | read | write | other | total | transactions | tps | qps | min | avg | max | 95th |
---|---|---|---|---|---|---|---|---|---|---|---|
oltp_read_write | 1785882 | 510252 | 255126 | 2551260 | 127563 | 425.09 | 8501.77 | 4.24ms | 23.52ms | 1087.40ms | 69.29ms |
oltp_read_only | 3682476 | 0 | 526068 | 4208544 | 263034 | 876.75 | 14027.94 | 1.66ms | 11.40ms | 183.17ms | 15.27ms |
oltp_delete | 0 | 366172 | 552067 | 918239 | 918239 | 3060.73 | 3060.73 | 0.04ms | 3.27ms | 586.35ms | 9.39ms |
oltp_update_index | 0 | 295467 | 936875 | 1232342 | 1232342 | 4107.59 | 4107.59 | 0.04ms | 2.43ms | 1148.12ms | 7.70ms |
oltp_update_non_index | 0 | 322361 | 1025120 | 1347481 | 1347481 | 4491.48 | 4491.48 | 0.05ms | 2.23ms | 784.62ms | 7.04ms |
oltp_insert | 0 | 527182 | 0 | 527182 | 527182 | 1757.22 | 1757.22 | 1.68ms | 5.69ms | 525.61ms | 10.65ms |
oltp_write_only | 0 | 803503 | 926111 | 1729614 | 288269 | 960.86 | 5765.13 | 1.95ms | 10.41ms | 431.10ms | 44.17ms |