数据库性能测试指标
内存利用
会话统计
SQL执行情况
测试环境
·测试机
·192.168.56.185 : Unix (64 Bit)
·压力机
·192.168.56.183 : Unix (64 Bit)
·数据库
·polardb
软件安装
压缩包上传183,版本benchmarksql-5.0
安装:直接解压,假设解压路径 /root/benchmarksql-5.0
安装jdk
[注]:检查已有jdk1.8
如无jdk先安装jdk
yum install jdk-7u79-linux-x64.rpm
安装Apache ant
用于编译benchmarkSQL, 5.0版本是需要编译的。
压缩包上传183,版本apache-ant-1.9.1-bin
安装:直接解压apache-ant-1.9.1-bin.tar.gz包即可。编译benchmarksql时在环境变量PATH中添加上解压包的bin路径即可。
编译benchmarksql5.0
# cd benchmarksql5.0
# ant
benchmarksql5.0测试步骤
(1)在185上创建benchmarksql的测试用户和数据库
#add polardb user(已完成)
groupadd polardb
useradd -g polardb polardb
huge_pages = on
chown -R polardb /u01/polar1100
cd /u01/polar1100
#init database(已完成)
su polardb
cd /u01/polar1100
/u01/polar1100/bin/initdb -D ./data
#start database
###database conf,在data/pg_hba.conf下面增加
host all all 0.0.0.0/0 trust
###database conf,在data/postgresql.conf下面增加以下配置参数
listen_addresses = '*'
max_connections = 2000
shared_buffers = 10240MB
###start instance
/u01/polar1100/bin/pg_ctl -D /u01/polar1100/data -l /u01/polar1100/logfile start
#create test db
/u01/polar1100/bin/psql -h localhost -p 5444
create user benchmarksql with encrypted password 'benchmark';
create database benchmarksql owner benchmarksql;
(2)回到测试机的benchmarksql目录,修改配置文件prop.pg(可以先备份配置文件)
#load data(在压力机器上执行)
cd /root/polardb/benchmarksql-5.0/run
cp props.pg props.polar
###修改props.polar
conn=jdbc:postgresql://192.168.56.185:5444/benchmarksql
user=benchmarksql
password=benchmark
warehouses=200
loadWorkers=16
###装载数据
./runDatabaseBuild.sh props.polar
(3)建立测试库,并加载数据
./runDatabaseBuild.sh props.polar
(4)修改性能测试配置参数(测试机)
/u01/polar1100/bin/psql -h localhost -p 5444 benchmarksql -c 'select now;drop index bmsql_oorder_idx1;select now;'
/u01/polar1100/bin/psql -h localhost -p 5444 benchmarksql -c 'select now;create index bmsql_oorder_idx2 on bmsql_oorder (o
_w_id, o_d_id, o_c_id);select now;'
/u01/polar1100/bin/psql -h localhost -p 5444 benchmarksql -c 'select now;vacuum analyze;select now;'
/u01/polar1100/bin/psql -h localhost -p 5444 benchmarksql -c 'checkpoint;'
###database conf,在data/postgresql.conf下面增加以下配置参数
huge_page = on
maintenance_work_mem = 2GB
synchronous_commit=off
full_page_writes=off
wal_buffers = 512MB
max_wal_senders = 0
wal_level = minimal
wal_compression = on
max_wal_size = 50GB
min_wal_size = 40GB
wal_writer_delay = 200ms # 1-10000 milliseconds
wal_writer_flush_after = 2MB # measured in pages, 0 disables
commit_delay = 20
commit_siblings = 5
bgwriter_delay = 20ms
bgwriter_lru_maxpages = 2000
bgwriter_lru_multiplier = 10.0
bgwriter_flush_after = 1024kB
checkpoint_timeout = 240min
checkpoint_completion_target = 0.9
autovacuum = on
autovacuum_naptime = 10min
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.6
autovacuum_freeze_max_age = 1200000000
autovacuum_multixact_freeze_max_age = 1400000000
(5)备份数据目录
(这样以后测试时就不需要删除表再重新加载数据了)
/u01/polar1100/bin/pg_ctl -D /u01/polar1100/data stop -m smart
cd /u01/polar1100/
tar -czf data.tar.gz ./data
(6)测试机记录系统磁盘使用情况,并截图
测试机执行
df-h
(7)跑测试,并生成结果,并截图
time ./runBenchmark.sh props.polar
(8) 多次测试
多次测试时,为了测试的准确性,最好删除当前数据目录,然后从4)中备份的数据目录中拷贝一份用于新的测试。或者执行以下步骤,清空数据库,再重建数据库(这样比较耗时间,200个warehouses的库可能需要1个小时以上,因此不推荐)。
###########清除上次测试数据############
./runDatabaseDestroy.sh props.pg
###########还原数据库建库数据############
/u01/polar1100/bin/pg_ctl -D /u01/polar1100/data stop -m immediate
cd /u01/polar1100/
rm -rf /u01/polar1100/data
tar -xzf /u01/polar1100/data.tar.gz
#######针对不同连接数设置参数(在压力机上测试)#########
#修改props.polardb
terminals=100/300/500/1000/1500 #100/300/..并发terminal测试
runTxnsPerTerminal=0
runMins=60
limitTxnsPerMin=3000000
##执行测试##
cd /root/benchmarksql-5.0/run
Time ./runBechmark.sh props.polar 2>&1 | tee mylog.log
测试时间以及截图汇总
1.使用nmon16监视并记录数据库服务器资源情况,记录频率为每分钟采集一次,共采集60次,命令:
./nmon -s60 -c60 -f -m /root/a
2.测试完成后记录TpmC数据结果值,取得nmon工作记录的结果文件。
terminals=100:
总结相当于二次学习和提炼,强化记忆,希望自己坚持下去