【问题标题】:Where to define the maximum number of connections in Postgres?Postgres 中的最大连接数在哪里定义?
【发布时间】: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

我的问题是

  1. 如果 postgresql.conf 中的 max_connections 为 100,是否是所有数据库的最大连接数,而不管数据库和角色设置?例如100个数据库只能同时有1个连接?

  2. 限制最大连接数的最佳位置在哪里。在数据库级别还是在角色级别?

  3. 还有其他需要考虑的吗?

TIA 提供任何建议或线索!

【问题讨论】:

  • 1) 是明确的from the docs(整个服务器的绝对限制)。其余的取决于您的用例。
  • dhke:“其余的取决于您的用例”。根据什么?有什么提示吗?
  • 实际上有多个数据库用户吗? (例如,具有单个 DB 用户的大型 Web 应用程序),您有多个数据库吗?这些数据库是否被不同的用户使用?在(常见)单用户的情况下,单数据库,max_connectionsdatconnlimitrolconnlimit 都是一样的,由最低的一个管理。
  • 是的,每台服务器有多个数据库,通常每个数据库有一个用户。这是否意味着我可以在数据库上将角色 rolconnlimit 设置为 10 并将 datconnlimit 设置为 -1。最大连接数由角色处理?那么postgres admin可以毫无问题地连接到数据库?
  • 请注意,还有superuser_reserved_connectionsdatconnlimitrolconnlimit 不是针对超级用户强制执行的。

标签: postgresql data-connections


【解决方案1】:
  1. max_connections 减去 superuser_reserved_connections 是与集群中所有数据库的所有非超级用户连接的总和的最大值。

  2. 如果要限制每个数据库的用户数,设置数据库限制似乎是显而易见的选择,对吧?

  3. 如果您最终将max_connections 设置为较高的值,请考虑改用连接池。

【讨论】:

  • “如果你想限制每个数据库的用户数量,设置数据库的限制似乎是显而易见的选择,对吧?”所以rolconnlimit 的角色必须设置为比datconnlimit 更高或-1 以确保访问?
  • 如果您不想限制每个用户的连接数,请将rolconnlimit 留在-1
猜你喜欢
  • 2014-10-05
  • 2015-05-24
  • 2012-12-06
  • 2014-02-09
  • 2015-08-26
  • 2012-05-02
  • 2023-03-24
  • 2021-08-15
  • 2012-04-30
相关资源
最近更新 更多