2016-08-22 56 views
2

マルチテナント環境でデータベースあたりのユーザー数を制限したいとします。しかし、最大レベルの接続には3つのレベルがあり、アドバイスに感謝する必要があります。私はデータベースごとPostgresで最大接続数を定義する場所は?

postgresql.conf = max_connections = 100 

サーバー上でレベル2のすべてのデータベースの最大接続を設定することができますPostgreSQLの設定を編集して

レベル1サーバ全体

データベースごとにデータベース接続制限を選択して設定できます。

SELECT datconnlimit FROM pg_database 

役割毎のレベル3

私が選択して、 "ユーザー" ごとの役割の接続制限を設定することができます

私の質問があり
SELECT rolconnlimit FROM pg_roles 

  1. MAX_CONNECTIONSであればをpostgresql.confは100ですが、データベースとロールの設定に関係なく、すべてのデータベースの最大接続になりますか?私は100データベースは同時に1つの接続を持つことができますか?

  2. ここで、最大接続数を制限する最適な場所はどこですか?データベースレベルまたはロールレベルで?

  3. 他の何かを考慮する必要がありますか?

TIAどのようなアドバイスや手掛かりがありますか?

+1

1)のための(絶対的な制限(https://www.postgresql.org/docs/current/static/runtime-config-connection.html#GUC-MAX-CONNECTIONS)[ドキュメントから]は明らかですサーバー全体)。残りの部分はユースケースによって異なります。 – dhke

+0

dhke: "残りはあなたのユースケースに依存します"。何かによります?何かヒント? – sibert

+0

実際に複数のDBユーザーがいますか? (たとえば、単一のDBユーザーを持つ大規模なWebアプリケーション)、複数のデータベースがありますか?これらのデータベースは異なるユーザーによって使用されていますか?シングルユーザーの(共通の)ケースでは、単一のDB、 'max_connections'、' datconnlimit'、 'rolconnlimit'はすべて同じで、最低のものによって管理されます。 – dhke

答えて

1
  1. max_connectionsマイナスsuperuser_reserved_connectionsは、クラスタ内のすべてのデータベースに対するすべての非スーパーユーザの接続の合計数の最大値です。

  2. データベースあたりのユーザー数を制限する場合は、データベースの制限を設定するのが当然の選択です。

  3. max_connectionsを高い値に設定すると、接続プールを使用することを検討してください。

+0

"データベースごとのユーザー数を制限したい場合は、データベースの制限を設定するのが当然の選択と思われます。だから、 'rolconnlimit'の役割は、アクセスを確保するために' datconnlimit'よりも高く設定するか-1にする必要がありますか? – sibert

+1

ユーザーあたりの接続数を制限したくない場合は、 'rolconnlimit'を' -1'のままにしてください。 –

関連する問題