Exchange Server 2003 でのメモリの使用量の最適化

 

Microsoft Exchange Server 2003 を実行しているサーバーに 1 GB 以上の物理メモリ (RAM) を搭載している場合は、Exchange 2003 がメモリを効果的に使用できるようにする必要があります。ハードウェア構成、データベースの数、およびサーバー上のユーザー数に関係なく、Exchange Server 2003 の Exchange インフォメーション ストア (Store.exe) プロセスは、指定可能な有限のメモリ空間で動作します。この空間を仮想アドレス空間と呼びます。ほとんどの場合、インフォメーション ストアでのこの仮想アドレス スペースの使用量が、Exchange Server 2003 メールボックス サーバー全体のパフォーマンスと拡張性を決定します。小規模から中規模のサーバーでは、Exchange Server 2003 は自動的に最適なバランスを決定します。大規模なサーバーでは、以下で説明するチューニング パラメータの一部またはすべてを手動で調整することもできます。

メモリ使用率の監視

イベント ビューアとパフォーマンス ログと警告を使用して、Exchange Server での仮想メモリの問題を監視することができます。アプリケーション ログには、仮想メモリの最大空きブロックが 32 MB まで減少したときにイベント ID 9582 警告が表示されます。この警告が表示された場合は、次の機会に Exchange ストア プロセスを再起動する必要があります。最大空きブロックが 16 MB まで減少すると、イベント ID 9582 エラーが再び表示されます。このエラーは、サーバーに障害が発生する可能性があることを意味するため、できるだけ早い機会にサーバーを再起動する必要があります。これらのイベントに対処しないと、突発的なメール配信エラーおよび IMAIL 変換エラー (イベント ID 12800) が発生する可能性があります。

詳細な手順については、「Exchange Server でメモリ使用量を監視する方法」を参照してください。

サーバーが仮想アドレス空間の不足の兆候を示している場合は、以下の設定を調整する必要があります。これらの設定が Exchange 用に最適化されていない場合は、アプリケーション イベント ログにイベント 9665 が表示されます。

イベント 9665

ストア プロセスが開始するときに、Exchange はメモリの構成が最適であるかどうかを確認します。メモリ設定が最適化されていない場合、イベント 9665 がイベント ログに書き込まれます (イベント ビューアで確認できます)。このメッセージが書き込まれるのは以下の場合です。

  • サーバーで Windows 2000 Server を実行しており、レジストリ内の値が 24,000 ~ 31,000 の範囲外に設定されている。
  • サーバーに 1 GB 以上のメモリが搭載されているが、/3GB スイッチが指定されていない。
  • サーバーで Windows Server 2003 を実行しており、メモリが 1 GB 以上あり、かつ /3GB スイッチが設定されているが、/USERVA が設定されていないか、3030 以外の値に設定されている。

サーバーが既に最適に構成されている場合は、イベント 9665 がログに記録されないように設定することができます。詳細な手順については、「メモリ構成の通知イベントを抑制する方法」を参照してください。

/3GB スイッチの設定

既定では、Windows 2000 Advanced Server および Windows Server 2003 は、Store.exe などのユーザー モード プロセスに 2 GB の仮想アドレス スペースを割り当てます。サーバーの物理メモリが 1 GB 以上ある場合は、Boot.ini ファイルに /3GB スイッチを設定して、仮想アドレス スペースを増やします。

/3GB スイッチを設定する詳細な手順については、「Windows の /3GB 起動スイッチを設定する方法」を参照してください。

/USERVA スイッチおよび SystemPages レジストリ値の設定

サーバーで Windows 2000 を実行している場合は、SystemPages レジストリ値を 24,000 ~ 31,000 に設定してください。サーバーで Windows Server 2003 を実行している場合は、SystemPages 値を 0 に設定し、Boot.ini ファイルに /USERVA=3030 起動スイッチを設定します。これらの設定により、スケールアップするシステムにとって重要な、サーバー上で入力できるシステム ページ テーブル エントリの数を増やすことができます。

/USERVA スイッチは、Windows Server 2003 で新しく導入されました。このスイッチの目的は、ユーザー モード プロセスとカーネル モード プロセスの間で仮想アドレス スペースの分配をより詳細に制御することです。このスイッチは、Exchange Server 2003 などのこのスイッチをサポートするアプリケーションのみで使用し、アプリケーションでサポートされる値を設定します。Exchange Server 2003 システムで使用する場合、/USERVA には常に 3030 を指定します (たとえば、/USERVA=3030)。この値により、オペレーティング システムに 40 MB が追加で割り当てられ、利用可能なすべてのシステム リソースを消費することなくさらにユーザーを追加することができます。

Windows 2000 で SystemPages レジストリ値を構成する詳細な手順については、「Windows 2000 のシステム ページ テーブル エントリを増やす方法」を参照してください。

/USERVA 起動スイッチを構成する詳細な手順については、「Windows の /USERVA 起動スイッチを設定する方法」を参照してください。

HeapDeCommitFreeBlockThreshold レジストリ値の設定

HeapDeCommitFreeBlockThreshold レジストリ値は、ヒープ マネージャがメモリをデコミット (解放) する前に、必要な空き領域を制御します。既定値は 0 で、その場合、ヒープ マネージャは、ページを 4 KB 単位でデコミットして使用可能にします。時間が経つにつれて、仮想アドレス空間が断片化することがあります。物理メモリが 1 GB 以上あるサーバーでは、このレジストリ キーの値を大きくして、断片化を減らすようにする必要があります。

HeapDeCommitFreeBlockThreshold レジストリ値を設定する詳細な手順については、「HeapDeCommitFreeBlockThreshold レジストリ値を設定する方法」を参照してください。