前提条件
测试环境
- 测试使用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 https://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