本文介紹RDS MySQL實例性能測試的方法。
前提條件
背景信息
實例性能測試的指標包括:
- 每秒執行事務數TPS(Transactions Per Second)
數據庫每秒執行的事務數,以COMMIT成功次數為準。
- SysBench標準OLTP讀寫混合場景中一個事務包含18個讀寫SQL。
- SysBench標準OLTP只讀場景中一個事務包含14個讀SQL(10條主鍵點查詢、4條范圍查詢)。
- SysBench標準OLTP只寫場景中一個事務包含4個寫SQL(2條UPDATE、1條DETELE、1條INSERT)。
- 每秒執行請求數QPS(Queries Per Second)
數據庫每秒執行的SQL數,包含INSERT、SELECT、UPDATE、DETELE、COMMIT等。
SysBench參數說明
參數 | 說明 |
db-driver | 數據庫引擎。 |
mysql-host | RDS實例連接地址。 |
mysql-port | RDS實例連接端口。 |
mysql-user | RDS實例賬號。 |
mysql-password | RDS實例賬號對應的密碼。 |
mysql-db | RDS實例數據庫名。 |
table_size | 測試表大小。 |
tables | 測試表數量。 |
events | 測試請求數量。 |
time | 測試時間。 |
threads | 測試線程數。 |
percentile | 需要統計的百分比,默認值為95%,即請求在95%的情況下的執行時間。 |
report-interval | 表示N秒輸出一次測試進度報告,0表示關閉測試進度報告輸出,僅輸出最終的報告結果。 |
skip-trx | 是否跳過事務。
|
性能測試步驟
本文以CentOS系統為例,演示性能測試的步驟。
- 登錄ECS實例,通過如下步驟安裝SysBench。
sudo yum install gcc gcc-c++ autoconf automake make libtool mysql-devel git mysql git clone https://github.com/akopytov/sysbench.git ##從Git中下載Sysbench cd sysbench ##打開sysbench目錄 git checkout 1.0.18 ##切換到sysbench 1.0.18版本 ./autogen.sh ##運行autogen.sh ./configure --prefix=/usr --mandir=/usr/share/man make ##編譯 make install
- 進行性能測試,包括OLTP讀寫混合場景壓測、OLTP只讀場景壓測和OLTP只寫場景壓測。
- OLTP讀寫混合場景壓測
參見如下命令進行測試,參數說明請參見SysBench參數說明。
##準備數據 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX oltp_read_write prepare ##運行workload sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 --report-interval=1 oltp_read_write run ##清理數據 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 oltp_read_write cleanup
測試結果示例如下:
- QPS:23869.32
- TPS:1193.47
- 響應時間(RT):36.89 ms
- OLTP只讀場景壓測
參見如下命令進行測試,參數說明請參見SysBench參數說明。
##準備數據 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX oltp_read_only prepare ##運行workload sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 --skip-trx=1 --report-interval=1 oltp_read_only run ##清理數據 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 oltp_read_only cleanup
測試結果示例如下:
- QPS:26130.73
- 響應時間(RT):33.72 ms
- OLTP只寫場景壓測
參見如下命令進行測試,參數說明請參見SysBench參數說明。
##準備數據 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX oltp_write_only prepare ##運行workload sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 --report-interval=1 oltp_write_only run ##清理數據 sysbench --db-driver=mysql --mysql-host=XXX --mysql-port=XXX --mysql-user=XXX --mysql-password=XXX --mysql-db=sbtest --table_size=25000 --tables=100 --events=0 --time=300 --threads=XXX --percentile=95 oltp_write_only cleanup
測試結果示例如下:
- TPS:4255.01
- 響應時間(RT):16.71 ms
說明 SysBench工具有很多標準壓測模型,您可以根據自己的業務場景選擇合適的模型使用。 - OLTP讀寫混合場景壓測
文檔內容是否對您有幫助?