如何限制Postgres指定用户组的最大并发连接数?
Postgres 用户级连接数限制方案
核心结论
角色连接限制继承完全是正确的方案,刚好匹配你的需求场景。
具体实现步骤
- 创建一个受限角色,设置全局连接数上限为2:
CREATE ROLE limited_conn_role WITH CONNECTION LIMIT 2; - 将user_a、user_b、user_c添加为该角色的成员,让他们继承连接限制:
GRANT limited_conn_role TO user_a, user_b, user_c; - 单独配置user_z的连接数(如果需要显式指定上限):
ALTER ROLE user_z WITH CONNECTION LIMIT 100;
关键注意事项
- 当用户属于多个角色时,Postgres会取所有角色中最严格的连接限制(即数值最小的上限),因此要确保user_a等用户没有单独设置更宽松的限制。如果之前有设置,可执行以下命令清除:
ALTER ROLE user_a WITH CONNECTION LIMIT -1; -- -1表示无限制,让继承的角色限制生效 - 数据库总连接数
max_connections是全局上限,user_z的连接数仍受此值约束,需确保该参数设置足够容纳user_z的100+连接需求。
内容的提问来源于stack exchange,提问作者Aaron Rafael Tello-Wharton
相关产品推荐
相关产品推荐

