二、PgBouncer配置详解

配置文件详解

配置文件分为[databases] 和 [pgbouncer]两部分,这个前面说过。现在我们来详细讲解一下里面的配置。

在上面的部分我们已经看到了一部分的[databases]部分的参数配置,都是以键值对的形式出现的,例如dbname、host、port、user、password,这几个参数都比较好理解。还有几个额外的配置我们接着看一下:
(1) pool_size 用来配置连接池的大小。连接池的含义上面说过,如果没有这个值则使用[pgbouncer]部分的default_pool_size的值。
(2)connect_query :后面跟一个SQL语句字符串,用于探测这个连接是否正常,如果执行SQL语句出错,则换一个连接。
(3)client_encoding:指定连接的客户端使用的字符集编码
(4)datestyle:指定日期类型
(5)timezone:指定时区。

[pgbouncer]部分的配置
这个部分的配置项比较多,主要分为下面几类:

  • 通用配置项
  • 日志配置项
  • 控制界面访问控制配置项
  • 连接健康检查和超时配置项
  • 危险的超时配置项
  • 底层网络配置项

下面来依次说这些配置:

通用配置

  • logfile 指定日志文件,默认值是/var/log/pgbouncer/pgbouncer.log
  • pidfile 指定pid文件位置,默认值是/var/run/pgbouncer/pgbouncer.pid
  • listen_addr 监听的地址,默认值是127.0.0.1,可以使用*号表示监听所有IP地址。
  • listen_port 监听的端口,默认值是6432
  • unix_socket_dir 指定unix socket文件的目录,默认为/tmp目录
  • unix_socket_mode 指定unix socket文件的权限,默认值为0777
  • unix_socket_group 指定unix socket文件的组,默认无
  • user 指定启动PgBouncer的用户名,windows系统不支持此设置
  • auth_type 认证的类型,默认是trust,其他值包括md5,crypt,plain,any。用的较多的是md5
  • auth_file 认证文件的位置,默认值是/etc/pgbouncer/userlist.txt
  • pool_mode 指定池的模式,默认是session模式,还可以是transaction和statement
  • max_client_conn 允许的最大连接数
  • default_pool_size 默认的池大小,默认值20
  • min_pool_size 最小的池大小,每个连接池至少会向后端数据库保持多少个连接
  • reserve_pool_size 连接池的保留连接数
  • reserve_pool_timeout 保留连接的超时时间
  • server_round_robin 负载均衡的方式是否设置为“round robin”,默认为关闭,即后进先出
  • ignore_startup_parameters 默认情况PgBouncer只会跟踪一些默认参数,并且能检测这些参数的变化,保持这些参数和客户端的一致。在这个配置后面跟的配置后被PgBouncer忽略,不会被检查。
  • disable_pqexec 是否禁止简单查询协议,默认值为0。简单查询协议允许一个请求发送多个SQL,容易导致SQL注入攻击。

日志配置项:

  • syslog 是否打开syslog,windows下打开eventlog,默认值为0,表示不打开。
  • syslog_ident 默认为PgBouncer
  • syslog_facility
  • log_connections 是否记录连接成功的日志,默认值为1,表示记录
  • log_disconnections 是否记录断开连接的日志,默认值为1,表示记录
  • log_pooler_errors 连接池法网客户端的错误是否记录在日志中,默认值为1,表示记录
  • stats_period 把汇总的统计信息写入日志的时间周期,默认是60s

控制界面访问控制配置项:

  • admin_users 管理用户名,默认值是postgres
  • stats_users 允许连接到控制界面,查看连接池只读信息的用户列表。可以执行除“SHOW FDS”以外的其他“SHOW”命令
  • server_reset_query
  • server_check_delay 空闲的连接多长时间进行一次健康检测,判断连接是否可用。如果设置为0,则立即检测,默认值为30s
  • server_check_query,进行健康检查的SQL语句,如果为0,表示不检测,默认值为“select 1;”
  • server_lifetime 连接的存活时间,连接超过这个时间就会被关闭,默认为3600,设置为0表示只使用一次。
  • server_idle_timeout 连接的idle时间,超过此时间,连接会被关闭。默认为600
  • server_connect_timeout 后端数据库的login时间超过这个值就会被关闭。默认为15s
  • server_login_retry 传教到后端数据库的连接失败后,等多长时间后重试,默认为15s
  • client_login_timeout 客户端与PgBouncer建立连接后,如果无法在这段时间内完成登录,那么连接会断开,默认为60s

危险超时配置项
指的是为防止一些未知错误或者原因导致系统卡住的针对性配置。

  • query_timeout 允许超过该时间值的SQL会被断开,应该比SQL实际的执行时间稍长,也需要比数据库的statement_timeout参数值更大。为了应付一些未知的网络问题。默认为0.0,禁止使用
  • query_wait_timeout 请求在队列中等待被执行的最长时间,如果超过该时间还没有分配到连接,就会断开。默认为0,禁止使用。
  • client_idle_timeout 客户端连接空闲超过该时间,则断开连接。默认值为0,禁止使用
  • idle_transaction_timeout 客户端启动事务后,超过这个时间没有结束事务,则关闭这个客户端连接。默认值为0,禁止使用

底层网络连接配置

  • pkt_buf 用于网络包的内部缓冲区大小,会影响发出的TCP包的大小即内存的使用,默认值为2048,一般保持默认值
  • max_packet_size 通过PgBouncer最大的包大小,包可以是一个SQL,也可以是返回的结果,默认值是2147483647
  • listen_backlog TCP监听函数listen的Backlog参数,默认值为128
  • sbuf_loopcnt 处理过程中,每个连接处理多少数据就切换到下一个连接。默认为5,如果设置为0,表示不限制。不限制时,一个连接发送大量数据,另外的连接可能就会空闲,导致被结束掉。
  • tcp_defer_accept linux下,默认为45,其他平台为0。详细解释用man 7 tcp来查看
  • tcp_socket_buffer 默认没有设置
  • tcp_keepalive 是否以操作系统的默认值打开基本的keepalive 设置,在linux下,操作系统的keepalive里,默认值时tcp_keepidle=7200, tcp_keepintvl-75,tcp_keepcnt=9,其他操作系统类型,默认值为1
  • tcp_keepcnt 默认未设置
  • tcp_keepidle 默认未设置
  • tcp_keepintvl 默认未设置

上面的这些参数,大部分都是采用默认设置,常用的几个配置也就是pgbouncer.ini文件的基本默认设置:

listen_addr = 127.0.0.1
listen_port = 6432
auth_type = trust
auth_file = /etc/pgbouncer/userlist.txt
admin_users = postgres
stats_users = stats, postgres
pool_mode = session
server_reset_query = DISCARD ALL
max_client_conn = 100
default_pool_size = 20

剩下的配置在需要的时候,可以查询它们的含义,知道有这个配置即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容