測試方法
更新時間 2025-06-03 20:52:09
最近更新時間: 2025-06-03 20:52:09
分享文章
本文介紹關系數據庫PostgreSQL版的性能測試方法。
前提條件
測試環境
- 測試使用ECS和RDS實例均在西南1可用區1。
- 測試使用ECS和RDS實例在同一VPC內。
- 測試使用ECS信息:
- 規格為s6.4xlarge.2
- 鏡像為CentOS 7.9
- 測試使用關系數據庫PostgreSQL版信息:
- 規格為S7系列下各規格
- 版本為PostgreSQL 12.20
- 存儲類型為超高IO數據盤500G
- 參數模板為RDS默認參數模板
說明
1.ECS規格較高是為了保證測試時性能瓶頸不在ECS端。
2.RDS數據盤大小涉及IOPS及IO吞吐量上限,需確保容量符合IO能力要求。
測試工具
- Sysbench工具
Sysbench是一個跨平臺且支持多線程的模塊化基準測試工具,用于評估系統在運行高負載的數據庫時相關核心參數的性能表現。
本次測試使用的Sysbench版本為1.0.20,具體的參數說明及安裝命令如下:
表1 Sysbench參數說明
| 參數 | 說明 |
|---|---|
| db-driver | 數據庫引擎。 |
| pgsql-host | 實例連接地址。 |
| pgsql-port | 實例連接端口。 |
| pgsql-user | 實例賬號。 |
| pgsql-password | 實例賬號對應的密碼。 |
| pgsql-db | 實例用于測試的數據庫名。 |
| table_size | 測試表大小。 |
| tables | 測試表數量。 |
| events | 測試請求數量。 |
| time | 測試時間。 |
| threads | 測試并發線程數。 |
| percentile | 需要統計的百分比,默認值為95%,即請求在95%的情況下的執行時間。 |
| report-interval | 測試進度報告輸出頻率,表示N秒輸出一次測試進度報告。 |
| skip-trx | 是否跳過事務。1:跳過0:不跳過 |
- 安裝方法
ECS實例執行如下命令安裝Sysbench。
wget -c //github.com/akopytov/sysbench/archive/1.0.20.zip
sudo yum install make automake libtool pkgconfig libaio-devel postgresql-devel
unzip 1.0.20.zip
cd sysbench-1.0.20 #打開sysbench目錄
./autogen.sh #運行autogen.sh
./configure --with-pgsql --without-mysql
make #編譯
make install
ECS執行如下命令調整ulimit限制:
sudo sh -c "ulimit -n 102400 && exec su $LOGNAME"
測試步驟
進行RDS實例的讀寫混合性能測試,參考如下命令,請根據實際情況填寫數據庫,用戶,密碼,端口等信息。
1.創建測試數據庫“sbtest”
psql -h<host> -p6543 "dbname=postgres user=root password=<password>" <<TEST
create database sbtest;
TEST
2.準備數據
sysbench ./tests/include/oltp_legacy/oltp.lua \
--db-driver=pgsql \
--pgsql-db=sbtest \
--pgsql-user=<username> \
--pgsql-password=<password> \
--pgsql-port=<port>
--pgsql-host=<host> \
--oltp-tables-count=64 \
--oltp-table-size=10000000 \
--time=180 \
--max-requests=0 \
--threads=64 \
--report-interval=5 \
--forced-shutdown=1 \
prepare
3.運行測試
sysbench ./tests/include/oltp_legacy/oltp.lua \
--db-driver=pgsql \
--pgsql-db=sbtest \
--pgsql-user=<username> \
--pgsql-password=<password> \
--pgsql-port=<port>
--pgsql-host=<host> \
--oltp-tables-count=64 \
--oltp-table-size=10000000 \
--time=180 \
--max-requests=0 \
--threads=64 \
--report-interval=5 \
--forced-shutdown=1 \
run
4.清理數據
sysbench ./tests/include/oltp_legacy/oltp.lua \
--db-driver=pgsql \
--pgsql-db=sbtest \
--pgsql-user=<username> \
--pgsql-password=<password> \
--pgsql-port=<port> \
--pgsql-host=<host> \
--oltp-tables-count=64 \
--oltp-table-size=10000000 \
--time=180 \
--max-requests=0 \
--threads=64 \
--report-interval=5 \
--forced-shutdown=1 \
cleanup