如果您的业务场景中存在大量短连接或需要频繁创建和销毁连接,建议开启RDS PostgreSQL连接池功能。该功能通过复用数据库连接,能够显著降低此类连接对实例性能的影响,并帮助您更好地控制数据库服务器的负载和资源消耗。
功能简介
RDS PostgreSQL的连接池功能基于开源组件PgBouncer实现。它作为应用程序和数据库之间的中间件,负责管理和复用数据库连接。
连接复用:连接池优先尝试复用现有连接,从而避免了频繁创建和销毁连接带来的性能开销,显著降低数据库服务器的负载,并提升应用的响应速度与并发处理能力。
资源控制:通过连接池可以限制最大客户端连接数和最大空闲时间等,有效防止过多连接占用系统资源。
前提条件
RDS PostgreSQL实例需满足以下要求:
实例大版本为PostgreSQL 11或以上。
产品系列为基础系列和高可用系列。
计费方式为包年包月或按量计费。
实例内核小版本为20240830或以上,且后缀不带
babelfish
。说明查看或升级内核小版本请参见升级内核小版本。
计费说明
该功能免费。
注意事项
开启PgBouncer会分配新的PgBouncer端口(默认为6432),原数据库端口(默认为5432)的直连访问不受影响。关闭PgBouncer后,将无法再通过PgBouncer端口访问实例,请确保业务程序已将连接端口改回实例原数据库端口。
开启PgBouncer后,系统自动在postgres库下安装pgbouncer_fdw和dblink插件以支持查看连接池监控指标,这些插件暂不支持卸载。
为实例开通SSL链路加密时,PgBouncer也会同步开启SSL,但不支持将访问控制(ACL,Access Control List)配置为verify-ca或verify-full的连接验证,也不支持通过客户端证书吊销文件。
对于包含复杂事务、需要跟踪数据库连接状态或使用特定PostgreSQL功能的应用程序,建议直接连接数据库,而非使用PgBouncer。
连接池的最大空闲时间默认为10分钟,超过此时长的空闲连接将被关闭。此值当前不支持修改。
操作步骤
开启或关闭连接池
访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
在左侧导航栏单击数据库连接。
单击开启PgBouncer或关闭PgBouncer。
在弹出的对话框中,单击确定。
开启后,在数据库连接页面可以查看PgBouncer端口(默认为6432)。
您可以通过单击修改连接地址,在修改连接地址窗口中,选择对应地址类型后,修改PgBouncer端口。
通过连接池连接RDS PostgreSQL实例
开启PgBouncer后,在应用程序或客户端中连接实例时,将连接端口替换为PgBouncer端口(默认为6432)即可。其他连接参数(如地址、用户名、密码)保持不变,详细的连接方法请参见连接PostgreSQL实例。
修改连接池参数
开启PgBouncer后,支持通过参数设置功能,修改PgBouncer的相关参数,调整连接池配置(如控制最大客户端连接数)。
开启PgBouncer后才能通过参数设置功能查看和修改PgBouncer参数。
如果想要通过参数模板来批量修改参数,则必须先开启PgBouncer,然后再将参数模板应用到RDS PostgreSQL实例。
默认参数模板为:PostgreSQL_PgBouncer_默认参数模板(rpg-sys-pgsql-pgbouncer)。
支持修改的参数及相关说明如下:
参数名 | 参数类型 | 默认值 | 描述 |
pgbouncer.pool_mode | string | transaction | 连接池模式。
|
pgbouncer.default_pool_size | int | 20 | 连接池默认允许连接数。 |
pgbouncer.max_client_conn | int | 100 | 连接池允许的最大客户端连接数。 |
pgbouncer.min_pool_size | int | 0 | 连接池允许的最小客户端连接数。 |
pgbouncer.query_wait_timeout | int | 120 | 查询在队列中等待执行的最长时间(单位为秒),0表示无限等待。超时后,客户端将自动断开连接。 |
pgbouncer.ignore_startup_parameters | string | "extra_float_digits" | 需要连接池忽略的额外参数,多个参数使用英文逗号(,)分隔。 连接池默认仅处理核心参数(client_encoding、datestyle、timezone、standard_conforming_strings),其他参数将导致连接拒绝。如需支持额外参数,请在此处列出,连接池将自动忽略这些参数,以确保连接成功。 重要 添加其他参数时,建议保留extra_float_digits,以兼容PostgreSQL JDBC连接。 |
pgbouncer.stats_users | string | "" | 允许连接到连接池虚拟库并执行只读查询的用户列表,多个用户用英文逗号(,)分隔。 |
更多参数说明请参见PgBouncer官方文档。
查看连接池监控指标
通过增强监控功能可以查看连接池的监控指标。只有开启连接池功能后,才可以在增强监控中查看相关监控指标。
监控指标如下:
指标 | 含义 |
db.pgbouncer.client_connections.active | 客户端活跃连接数。 |
db.pgbouncer.client_connections.waiting | 客户端等待连接数。 |
db.pgbouncer.server_connections.active | 服务端活跃连接数。 |
db.pgbouncer.server_connections.idle | 服务端空闲连接数。 |
db.pgbouncer.total_pooled_connections | 连接池总连接数。 |
db.pgbouncer.num_pools | 连接池数量。 |
相关API
您可以调用ModifyDBInstanceConfig接口为RDS PostgreSQL实例开启或关闭PgBouncer功能。需要配置的参数如下:
参数 | 说明 | 示例值 |
DBInstanceId | 待开启或关闭PgBouncer功能的RDS PostgreSQL实例ID。 | pgm-**** |
ConfigName | 配置项名称。 | pgbouncer |
ConfigValue | 配置项取值。
| true |