阿里云RDS PG/PPAS(Oracle 兼容版) 用户连接规划

less than 1 minute read

背景

PostgreSQL在设计时为DBA考虑了保留连接,通过参数superuser_reserved_connections来控制,也就是说当数据库的最大连接为100时,普通用户最多能连100-superuser_reserved_connections个连接。

剩余的连接是给超级用户保留的,方便DBA连接到数据库进行维护。

但是由于RDS PG/PPAS的用户拿到的是普通用户,如果用户程序有问题,把所有普通用户的连接占满,用户将无法连接到RDS进行问题的排查,就像高速公路堵车连生命通道也堵了。

screenshot

用户遇到这种情况怎么办呢怎么办?

目前的方法是提工单,RDS的售后来帮助处理,但是效率肯定没有用户自己处理高,要经过提工单的过程。

有没有更好的方法呢?

RDS PG用户连接的规划

PostgreSQL 的连接控制可以精确到数据库或用户。

当用户在一个实例创建了多个用户时,可以为每个用户设置最大连接数。

screenshot

当用户一个实例创建了多个数据库时,可以为每个数据库设置最大的连接数。

screenshot

通过这两种手段,就可以为用户留出生命通道。

用法举例

1. 用户购买了RDS PG的实例,实例规格为1000个连接,选择了一个rds超级用户名为rds_superuser_digoal,用户又创建了一些普通用户。

( rds 超级用户 是介于 数据库超级用户 与 普通用户之间的一种用户。 )

create role r1 login encrypted password 'pwd' connection limit 100;  
create role r2 login encrypted password 'pwd' connection limit 500;  
create role r3 login encrypted password 'pwd' connection limit 300;  

用户使用r1 最多能连100个连接,以此类推。 因此保留给rds_superuser_digoal的有100个连接。 出了问题用户还能用rds_superuser_digoal连接数据库进行排查。

用户也可以通过设置数据库的连接限制,来给postgres或者template1保留连接。

create database db1 connection limit 100;  
...  

祝大家玩得开心,欢迎随时来 阿里云促膝长谈 业务需求 ,恭候光临。

阿里云的小伙伴们加油,努力做 最贴地气的云数据库

Flag Counter

digoal’s 大量PostgreSQL文章入口