前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Postgresql pgbouncer 部分参数示疑

Postgresql pgbouncer 部分参数示疑

作者头像
AustinDatabases
发布2021-04-22 16:33:12
7070
发布2021-04-22 16:33:12
举报
文章被收录于专栏:AustinDatabases

最近TEAM的DB 在研究pgbouncer 时complain了一下pgbouncer的配置问题找到的信息少的问题,这边总结了一下.希望对他有所帮助.

pgbouncer 主要的目的需要确认一下:

数据库连接池的主要目的在于减少执行数据库创建连接和读/写数据库操作所涉及的开销。另外数据库连接的复用会降低内存的消耗和开销,降低数据库在高并发时的系统资源消耗,提高数据库的响应能力.但针对数据库的不同缓冲池也分为,程序方面的缓冲池,和数据库中间件方式的缓冲池. Pgbouncer就是在程序端和数据库端之间达成以上目的的中间件.

以下的参数按照重要性来进行排序:

1 pool_mode

pool_mode 是pgbouncer的核心的配置,这个配置决定了你的pgbouncer的功能点. 主要的参数

session

transaction

statement

三种参数需要在不同的情况下使用,session 是最稳定的参数,他本身对于连接的复用在于连接本身,当连接失效后,才能通过session对连接进行复用. query_wait_timeout 参数与这个参数应该进行匹配,例如一个query 到底需要在连接池满以后,需要对没有连接的进程等待多长时间.

transaction 参数与session本身并不一样他对于访问的分配是通过事务的方式来进行的,而不是通过连接本身,一个连接有点分时复用的方式,不同的连接的执行的语句会在不同的时间在一个session中被执行.

最后一个是statement的方式,这个方式属于是最激进的方式,在使用这个方式的时候,需要十分的注意,应用的系统的设计是否能接受这样的模式返回结果.

2 default_pool_size, 这个设置主要是根据POSTGRESQL 最大的设置的连接数进行设置,但也可以设置的少于最大的连接数,保证在打满的过程中,某些管理连接或者特殊连接,使用.

3 reserve_pool_size reserve_pool_timeout, 这两个参数是需要进行匹配使用的, reserve_pool_size 是在连接满载后,可以在 接入多少连接,并且这些连接在这个等待连接池中可以驻留的时间 reserve_pool_timeout.

4 server_life_time 当连接很长时间不被使用,将被处理(关闭),这个为判断连接多长时间没有使用的参数

5 server_idle_timeout 当连接很长时间没有被使用, 将被彻底关闭掉,这里为设置相关的时间

6 server_connect_timeout 当和数据库服务器连接处理的时间超过设定的时间,这个连接就被关闭掉.

7 server_login_retry 如果连接超时,重试和服务器之间进行连接的次数

8 query_timeout 主要是配置查询的超时的时间, 超过查询时间的查询会被KILL掉

9 query_wait_timeout 查询在等待获得连接的时候最长的等待的时间,超过这个时间,系统将返回错误给应用方.

10 client_login_timeout , 在连接已经被使用的过程中, 存在访问的客户端出现网络,主机故障等问题,,超过这个时间就直接将连接取消.

以上是一些和连接有关的参数

pgbouncer 另一个比较有意思的地方是用户的配置, 用户的配置在pgbouncer 是一个难点.我们以下面的这个例子来

pgbouncer 的两种用户都在这里配置

1 pgbouncer 自己的管理账号,这个账号是你自己设置的在在 admin_user

相关的密码需要在userlist.txt中设置

这个数据库本身是虚构的,并不是真正的数据库,通过pgbouncer 的端口进行登录对数据库进行管理.

psql -p 6432 pgbouncer

[databases]

te = host=192.168.198.101 port=5432 user=te password=test dbname=postgres client_encoding=UNICODE connect_query='select 1'

[pgbouncer] listen_addr = * listen_port = 6432 auth_type = plant auth_file = /etc/pgbouncer/userlist.txt admin_users = postgres pool_mode = session max_client_conn = 100 default_pool_size = 20 logfile = /var/log/pgbouncer/pgbouncer.log pidfile = /var/log/pgbouncer/pgbouncer.pid

对于pgbouncer 的配置问题

1 监听地址listen_addr 基本上建议设置为 * ,

2 auth_type 主要有几种设置 md5 hba plain

3 auth_file 一般设置为userlist.txt

这里主要注意 md5 或者 hba

select usename, passwd from pg_shadow order by 1;

大部分设置中也是这样设置,通过查找用户的md5密码来进行userlist.txt 的设置.

另外pgbouncer 也支持hba 的方式

[pgbouncer]auth_type = hbaauth_hba_file = /etc/pgbouncer/pg_hba.confauth_file = /etc/pgbouncer/userlist.txt

# TYPE DATABASE USER ADDRESS METHODhost postgres test 192.168.198.100/32 md5host postgres app 192.168.198.101/32 md5

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档