4.3 静的接続プールを使用したReal-World Performanceの最適化について

Real-World Performanceグループが調査するオンライン・トランザクション処理(OLTP)のパフォーマンス問題のほとんどは、アプリケーションで使用される接続方法に関連します。このため、健全な接続方法を設計することはシステム・パフォーマンスにおいて重要で、特に、規模を拡大して増加する要件を満たす必要のある企業環境では重要です。

ほとんどのアプリケーションは、データベースで開いたままにする最小数の接続とデータベースに行うことができる最大数の接続を構成したデータベースへの動的プールの接続を使用します。アプリケーションでデータベースへの接続を必要とする場合、プールから要求します。使用できる接続がないと、接続の最大数に達していない場合は新しい接続が作成されます。接続が指定された期間使用されていない場合、使用できる接続の最小数を超えると接続が閉じられます。

この構成は、アプリケーションが必要とするアクティブな接続数を維持する場合のみ、システム・リソースを節約します。実際、この構成では、接続ストームおよびデータベース・システムのCPUオーバーサブスクリプションが有効になり、システムがすぐに不安定になります。データベース接続が必要なアプリケーション・サーバーの多くのアクティビティが存在する場合、接続ストームが発生する可能性があります。すべてのリクエストを満たすデータベースへの十分な接続がない場合、アプリケーション・サーバーは新しい接続を開きます。データベースの新しい接続の作成は、リソース消費型アクティビティです。多くの接続が短期間に行われる場合、データベース・システムのCPUリソースが過負荷になる可能性があります。

そのため、静的接続プールを作成するには、データベース・システムへの接続数は、システムで使用できるCPUコアに基づく必要があります。CPUコアごとに1-10個の接続をお薦めします。理想的な数値は、アプリケーションおよびシステム・ハードウェアによって異なります。ただし、値はその範囲内です。Real-World Performanceグループでは、接続の最小数と最大数を同じ値に設定して、データベースへの接続の静的プールを作成することを推奨します。これにより、データベース接続の数を事前定義された値に維持して接続ストームを防ぎます。

たとえば、データベース・サーバーに2 CPU、CPUごとに12コア、CPUごとに2スレッドがある場合、24コアを使用可能で、データベースへの接続数を12から120の間にする必要があります。CPUコアのみが命令をリタイアできるため、スレッド数は考慮されません。システムに複数のデータベースがある場合、この数値は、システムに接続しているすべてのアプリケーションおよびすべてのデータベースに対して累積されます。2つのアプリケーション・サーバーがある場合、接続の最大数(たとえば、ここでは120)を分割する必要があります。システムで実行している2つのデータベースがある場合、接続の最大数(120個の接続)を分割する必要があります。