【发布时间】:2016-12-29 00:41:11
【问题描述】:
我想在多租户环境中限制每个数据库的用户数。但是有三个级别的最大连接数,如果有任何建议,我将不胜感激。
1 级整个服务器
通过编辑 Postgresql 的配置,我可以为服务器上的所有数据库设置最大连接数
postgresql.conf = max_connections = 100
每个数据库级别 2
我可以选择和设置每个数据库的数据库连接限制:
SELECT datconnlimit FROM pg_database
每个角色 3 级
我可以选择和设置每个“用户”的角色连接限制:
SELECT rolconnlimit FROM pg_roles
我的问题是
如果 postgresql.conf 中的 max_connections 为 100,是否是所有数据库的最大连接数,而不管数据库和角色设置?例如100个数据库只能同时有1个连接?
限制最大连接数的最佳位置在哪里。在数据库级别还是在角色级别?
还有其他需要考虑的吗?
TIA 提供任何建议或线索!
【问题讨论】:
-
1) 是明确的from the docs(整个服务器的绝对限制)。其余的取决于您的用例。
-
dhke:“其余的取决于您的用例”。根据什么?有什么提示吗?
-
实际上有多个数据库用户吗? (例如,具有单个 DB 用户的大型 Web 应用程序),您有多个数据库吗?这些数据库是否被不同的用户使用?在(常见)单用户的情况下,单数据库,
max_connections、datconnlimit和rolconnlimit都是一样的,由最低的一个管理。 -
是的,每台服务器有多个数据库,通常每个数据库有一个用户。这是否意味着我可以在数据库上将角色 rolconnlimit 设置为 10 并将 datconnlimit 设置为 -1。最大连接数由角色处理?那么postgres admin可以毫无问题地连接到数据库?
-
请注意,还有
superuser_reserved_connections。datconnlimit和rolconnlimit不是针对超级用户强制执行的。
标签: postgresql data-connections