PostgreSQL数据库连接限制设置后未生效,是否需重启?
PostgreSQL数据库连接限制失效问题解答
是否需要重启实例?
不需要。ALTER DATABASE ... CONNECTION LIMIT是动态生效的设置,执行后立即对新建立的连接生效,无需重启PostgreSQL实例,官方文档也明确该操作不需要重启。
连接限制失效的可能原因
超级用户连接不受限制:PostgreSQL的数据库连接限制仅对非超级用户生效,拥有
superuser权限的用户可以不受datconnlimit限制建立任意数量的连接。可以通过以下查询验证当前连接的用户是否为超级用户:SELECT sa.usename, u.usesuper FROM pg_stat_activity sa JOIN pg_user u ON sa.usesysid = u.usesysid WHERE sa.datname = 'Moe';如果结果中大量连接对应的
usesuper为true,说明这些连接不受限制。连接池或长连接复用:如果应用使用了连接池工具(如PgBouncer)或自身维护长连接,若连接池使用的是超级用户账号,新建立的连接会直接绕过限制;另外,设置限制前已建立的存量长连接,即使处于空闲状态也不会被强制断开,仍会占用连接数。
存量活跃连接未清理:虽然你清理了空闲连接,但处于活跃状态的连接不会被自动断开,限制仅作用于新连接。不过你提到清理后剩余8个,后续又增长到97,说明是新建立的连接绕过了限制,大概率和超级用户权限有关。
版本特定bug:PostgreSQL 11.x的早期版本可能存在连接限制相关的小bug,建议升级到11系列的最新小版本(如11.23),具体可结合IT部门的升级计划推进。
内容的提问来源于stack exchange,提问作者daveg
相关产品推荐
相关产品推荐

