データベース接続プールの概念

リソースの枯渇と輻輳を避けるために、これらの概念を理解することが重要です

このセクションは、Keycloakのデータベース接続プールを設定する際、考慮事項とベストプラクティスを理解したい場合に役立ちます。これが適用される構成については、Keycloak Operatorを使用したHAのためのKeycloakのデプロイを参照してください。

概念

新しいデータベース接続の作成は時間がかかるため、コストがかかります。リクエストが到着したときに接続を作成すると、応答が遅れるため、リクエストが到着する前に接続を作成しておくのが良いでしょう。また、短時間に大量の接続を作成すると、システムが遅くなり、スレッドがブロックされるスタンピード現象を引き起こし、事態を悪化させる可能性もあります。接続を閉じると、その接続のサーバー側のステートメントキャッシュもすべて無効になります。

最高のパフォーマンスを得るためには、初期、最小、および最大のデータベース接続プールサイズの値はすべて同じである必要があります。これにより、新しいリクエストが到着したときにコストのかかる新しいデータベース接続の作成を回避できます。

データベース接続を可能な限り長く開いておくことで、接続にバインドされたサーバー側のステートメントキャッシュが可能になります。PostgreSQLの場合、サーバー側のプリペアドステートメントを使用するには、クエリを(デフォルトで)少なくとも5回実行する必要があります

詳細については、プリペアドステートメントに関するPostgreSQLドキュメントを参照してください。

このページの内容