1. 测试环境
2. 环境搭建
host all all 0.0.0.0/0 trusthost replication all 0.0.0.0/0 trust
listen_addresses = '*'max_wal_senders = 5wal_level = hot_standbypg_ctl -D mnt/40g/pgdata/pgpool start
下载链接:https://pgpool.net/mediawiki/index.php/Downloads
mkdir pgpoolchown postgres:postgres pgpoolchown postgres:postgres mnt/40g/software/pgpool-II-4.1.2.tar.gz
cd mnt/40g/software/tar -xzvf pgpool-II-4.1.2.tar.gzcd pgpool-II-4.1.2./configure --prefix='/pgpool'--with-pgsql-libdir="/usr/local/hg_dist/lib"--with-pgsql="/usr/local/hg_dist/"makemake install
cd mnt/40g/software/pgpool-II-4.1.2/src/sql/pgpool-regclass/makemake install
scppgpool-regclass.so postgres@maggie2:/usr/local/hg_dist/lib/postgresqlpsql -fpgpool-regclass.sql -h maggie2 -p 5432 template1
pg_basebackup -h 192.168.31.102 -p 5432 -U postgres -Fp -Xs -Pv -R -D /mnt/40g/pgdata/pgpoolpg_ctl start
[root@maggie1 etc]# pg_md5 -p postgrespassword:e8a48653851e28c69d0506508fb27fc5
cd usr/local/etc #pgpool的默认安装路径cp pgpool.conf.sample pgpool.conflisten_addresses='*' #接受所有的链接socket_dir='/var/run' #建立接受 UNIX 域套接字连接的目录,修改要重启pgpoolpcp_listen_addresses = '*'pcp_socket_dir = '/var/run'backend_hostname0 = 'maggie1'backend_port0 = 5432backend_weight0 = 1 #负载均衡的权限,两台backend权限相同时,做平均分配backend_data_directory0 = '/mnt/40g/pgdata/pgpool'backend_hostname1 = 'maggie2'backend_port1 = 5432backend_weight1 = 1backend_data_directory1 = '/mnt/40g/pgdata/pgpool'load_balance_mode = onmaster_slave_mode = onmaster_slave_sub_mode = 'stream'sr_check_period = 2sr_check_user = 'postgres'sr_check_database = 'postgres'delay_threshold = 10replication_mode = offreplicate_select = offnum_init_children = 150 // 从客户端发起的最大并发连接数max_pool = 4 //到PG的连接数为num_init_children * max_pool
pgpool -n > /tmp/pgpool.log 2>&1 &pgpool stop
3. 测试数据
3.1相同并发
3.1.1 pgbench直连pgpool
[postgres@maggie1 ~]$ pgbench -c 300 -j 300 -M prepared -n -P 2 -S -T 200 -r -h maggie1 -p 9999transaction type: <builtin: select only>scaling factor: 100query mode: preparednumber of clients: 300number of threads: 300duration: 200 snumber of transactions actually processed: 2898267latency average = 10.293 mslatency stddev = 5.346 mstps = 14445.955582 (including connections establishing)tps = 25308.963441 (excluding connections establishing)
statement latencies in milliseconds:
0.005 \set aid random(1,100000 * :scale)10.290 SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
CPU: | Use% | Sys% | Wai% | Idle% | CPU% |
Avg | 30.4 | 62.4 | 0.0 | 7.3 | 92.7 |
Max | 34.3 | 68.7 | 0.0 | 99.6 | 100.0 |
Max:Avg | 1.1 | 1.1 | 0.0 | 13.7 | 1.1 |
Use% | Sys% | Wai% | Idle% | CPU% | |
Avg | 42.0 | 37.1 | 0.0 | 20.9 | 79.1 |
Max | 45.8 | 44.4 | 0.0 | 99.8 | 87.5 |
Max:Avg | 1.1 | 1.2 | 0.0 | 4.8 | 1.1 |
3.1.2 pgbench直连主节点
[postgres@maggie1 ~]$ pgbench -c 300 -j 300 -M prepared -n -P 2 -S -T 200 -r -h maggie2 -p 5432transaction type: <builtin: select only>scaling factor: 100query mode: preparednumber of clients: 300number of threads: 300duration: 200 snumber of transactions actually processed: 4662318latency average = 12.758 mslatency stddev = 3.460 mstps = 23281.878597 (including connections establishing)tps = 23473.435897 (excluding connections establishing)
0.003 \set aid random(1, 100000 * :scale)12.762 SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
CPU: | Use% | Sys% | Wai% | Idle% | CPU% |
Avg | 12.2 | 16.2 | 0.0 | 71.6 | 28.4 |
Max | 14.0 | 20.1 | 0.2 | 99.6 | 34.1 |
Max:Avg | 1.1 | 1.2 | 100.0 | 1.4 | 1.2 |
Use% | Sys% | Wai% | Idle% | CPU% | |
Avg | 46.2 | 26.6 | 0.0 | 27.3 | 72.7 |
Max | 64.8 | 39.4 | 0.1 | 99.8 | 100.0 |
Max:Avg | 1.4 | 1.5 | 52.0 | 3.7 | 1.4 |
3.2 CPU达到最满
3.2.1 pgbench直连pgpool
[postgres@maggie1 ~]$ pgbench -c 400 -j 300 -M prepared -n -P 2 -S -T 200 -r -h maggie1 -p 9999transaction type: <builtin: select only>scaling factor: 100query mode: preparednumber of clients: 400number of threads: 300duration: 200 snumber of transactions actually processed: 2879549latency average = 6.795 mslatency stddev = 3.551 mstps = 14357.998016 (including connections establishing)tps = 20360.802379 (excluding connections establishing)
0.004 \set aid random(1, 100000 * :scale)6.792 SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
CPU: | Use% | Sys% | Wai% | Idle% | CPU% |
Avg | 25.4 | 57.5 | 0.0 | 17.1 | 82.9 |
Max | 32.1 | 70.6 | 0.0 | 99.5 | 100.0 |
Max:Avg | 1.3 | 1.2 | 0.0 | 5.8 | 1.2 |
Use% | Sys% | Wai% | Idle% | CPU% | |
Avg | 36.2 | 37.1 | 0.0 | 26.7 | 73.3 |
Max | 43.4 | 53.5 | 0.1 | 99.8 | 87.1 |
Max:Avg | 1.2 | 1.4 | 100.0 | 3.7 | 1.2 |
3.2.2 pgbench直连主节点
[postgres@maggie1 ~]$ pgbench -c 400 -j 400 -M prepared -n -P 2 -S -T 200 -r -h maggie2 -p 5432transaction type: <builtin: select only>scaling factor: 100query mode: preparednumber of clients: 400number of threads: 400duration: 200 snumber of transactions actually processed: 4523310latency average = 17.420 mslatency stddev = 4.249 mstps = 22587.966748 (including connections establishing)tps = 22910.531557 (excluding connections establishing)
0.004 \set aid random(1, 100000 * :scale)17.424 SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
CPU: | Use% | Sys% | Wai% | Idle% | CPU% |
Avg | 11.6 | 16.4 | 0.0 | 72.0 | 28.0 |
Max | 13.4 | 20.1 | 0.1 | 99.5 | 32.7 |
Max:Avg | 1.2 | 1.2 | 100.0 | 1.4 | 1.2 |
Use% | Sys% | Wai% | Idle% | CPU% | |
Avg | 59.6 | 39.5 | 0.0 | 0.9 | 99.1 |
Max | 62.8 | 43.1 | 0.0 | 34.5 | 100.0 |
Max:Avg | 1.1 | 1.1 | 0.0 | 38.8 | 1.0 |
4. 测试结论
I Love PG
关于我们
中国开源软件推进联盟PostgreSQL分会(简称:中国PG分会)于2017年成立,由国内多家PostgreSQL生态企业所共同发起,业务上接受工信部中国电子信息产业发展研究院指导。中国PG分会是一个非盈利行业协会组织。我们致力于在中国构建PostgreSQL产业生态,推动PostgreSQL产学研用发展。
技术文章精彩回顾 PostgreSQL学习的九层宝塔 PostgreSQL职业发展与学习攻略 2019,年度数据库舍 PostgreSQL 其谁? Postgres是最好的开源软件 PostgreSQL是世界上最好的数据库 从Oracle迁移到PostgreSQL的十大理由 从“非主流”到“潮流”,开源早已值得拥有 PG活动精彩回顾 创建PG全球生态!PostgresConf.CN2019大会盛大召开 首站起航!2019“让PG‘象’前行”上海站成功举行 走进蓉城丨2019“让PG‘象’前行”成都站成功举行 中国PG象牙塔计划发布,首批合作高校授牌仪式在天津举行 群英论道聚北京,共话PostgreSQL 相聚巴厘岛| PG Conf.Asia 2019 DAY0、DAY1简报 相知巴厘岛| PG Conf.Asia 2019 DAY2简报 独家|硅谷Postgres大会简报 直播回顾 | Bruce Momjian:原生分布式将在PG 14版本发布 PG培训认证精彩回顾 中国首批PGCA认证考试圆满结束,203位考生成功获得认证! 中国第二批PGCA认证考试圆满结束,115位考生喜获认证! 重要通知:三方共建,中国PostgreSQL认证权威升级! 近500人参与!首次PGCE中级、第三批次PGCA初级认证考试落幕! 2020年首批 | 中国PostgreSQL初级认证考试圆满结束 一分耕耘一分收获,第五批次PostgreSQL认证考试成绩公布





