多数のクライアントにサービスを提供するデータベースサーバーを維持しています。各クライアントは通常、いくつかのクライアントアプリケーションを実行しています。データベースサーバー(Oracle 9i)への接続の総数がピーク負荷時に800接続に達しています。 Windows 2003サーバーがメモリ不足になり始めています。より大きなメモリ容量を得るために、現在64ビットWindowsへの移行を計画しています。開発者として、接続プーリングを備えた多層アーキテクチャに移行することをお勧めします。これは、この問題の自然な解決策であると私は信じています。ただし、私のアイデアをサポートするために、次の情報が必要です。
この質問への答えは、使用されているハードウェアの正確な仕様など、かなりの数の要因に依存するはずです。おおよその見積もりまたは実際の経験を期待しています。
データベース接続を処理するには、別のOracleプロセスが必要で、最大2 MBのメモリが必要になる場合があります。通常、Oracleのインストールでは、使用可能なメモリとCPU構成に基づいて、同時接続の数が制限されます。
たとえば、データベースに50の顧客アカウントがあり、アカウントごとに最大100の同時接続があるとします。平均ですべてのアカウントが25%= 25接続のみを使用する場合、平均の総数は1250接続になります。つまり、接続固有のデータを保存するためだけに2500 MBが必要です。コンテキストの切り替えに必要なプロセッサ時間もあります。
同時接続に制限を設定することで、トランザクションが確実に通過し、非常にアクティブな顧客アカウントがデータベースサーバーのリソースをブロックし始めないようにすることができます。接続数は、セッションパラメータとライセンスによって制限されます。 sessionsパラメータは、Oracleバックグラウンドプロセスを含む接続の総数を制御します。
64ビットのWindowsプラットフォームを使用してサーバーにさらにRAMを追加することをお勧めします。16GBのメモリを追加するだけで、多くの時間を費やす必要がないためです。
現実的なワークロードシナリオで構成がどのように実行されるかの詳細については、 Oracle E-Business Suite標準ベンチマーク を参照してください。通常、それらには多数の接続があります。
Windows上のOracleは、プロセスではなくユーザースレッドを開きます。 (これは、ユーザー接続がクラッシュする場合は、すべてを伴うため、適切ではありません。)
つまり、メモリによって制限されます。ユーザーあたりのスレッドおよびPGAのセッションオーバーヘッドの数MBと、実行していることに依存するコンテキストとSGA軽い作業(==ユーザーが同じ単純なクエリを繰り返し実行する)の場合は、セッションをカウントするだけで済みます。