Exchange Server 2003 中記憶體使用量的最佳化

 

上次修改主題的時間: 2005-05-25

如果您已在執行 Microsoft Exchange Server 2003 的伺服器上,安裝了 1 GB 以上的實體記憶體 (RAM),那麼您一定要確認 Exchange 2003 能夠有效利用那些記憶體。Exchange Server 2003 中的 Exchange Information Store (Store.exe) 處理程序可以定址的記憶體數量本來就有限,這與硬體組態、資料庫數目及伺服器上的使用者數目無關。此數量也就是虛擬地址空間。在大多數案例中,可供資訊儲存庫使用的虛擬地址空間使用量,會左右 Exchange Server 2003 信箱伺服器的整體效能及延展性。若為小型至中型的伺服器,Exchange Server 2003 可自動做出最佳的平衡。但若為較大型的伺服器,您最好如下所述,手動調整部份或全部調整參數。

監視記憶體使用量

您可以使用 [事件檢視器] 與 [效能記錄及警示],來監視 Exchange Server 上的虛擬記憶體問題。在應用程式記錄檔中,當最大的虛擬記憶體可用區塊降到 32 MB 時,會出現事件識別碼為 9582 的警告訊息。如果您看到這個警告,即應找機會重新啟動 Exchange 儲存區處理程序。如果最大區塊降到 16 MB,會再度出現事件識別碼為 9582 的錯誤訊息;這個錯誤表示伺服器可能會運作失敗,您應該儘快重新啟動伺服器。若未處理這些事件,可能會導致偶發性的郵件傳遞失敗與 IMAIL 轉換失敗 (事件識別碼為 12800)。

如需詳細指示,請參閱<如何監視 Exchange Server 上的伺服器

如果伺服器出現虛擬地址空間過低的信號時,則應該調整下列設定。如果這些設定對 Exchange 來說不是最佳的情況,則應用程式事件日誌中會出現事件 9665。

事件 9665

Exchange 會在儲存區處理程序開始時,執行最佳的記憶體組態檢查。如果記憶體設定不是最佳情況,則會在 [事件檢視器] 中收到事件 9665。此訊息會在下列情況時出現:

  • 該伺服器執行 Windows 2000 Server,而且登錄中的值超出 24,000 到 31,000 的範圍。
  • 伺服器有 1GB 或更多的記憶體,但沒有 /3GB 參數。
  • 伺服器執行 Windows Server 2003,且有 1 GB 或更多的記憶體,並設定了 /3GB 參數,但沒有設定 /USERVA 參數,或並未設為 3030。

如果您有信心已最佳化設定您的伺服器,並且想要避免記錄事件 9665,您可以關閉事件 9665 的記錄功能。如需詳細指示,請參閱<如何抑制記憶體組態通知事件>。

設定 /3GB 參數

Windows 2000 Advanced Server 及 Windows Server 2003 預設會配置 2 GB 的虛擬地址空間給使用者模式處理程序,如 Store.exe。如果伺服器有 1 GB 或更多的實體記憶體,請在 Boot.ini 檔案中設定 /3GB 參數,增加虛擬地址空間。

如需如何設定 /3GB 參數的詳細指示,請參閱<如何在 Windows 中設定 /3GB 啟動參數>。

設定 /USERVA 及 SystemPages 登錄值

如果伺服器執行 Windows 2000,則應該將 SystemPages 登錄值設為介於 24,000 和 31,000 之間。如果伺服器執行 Windows Server 2003,請將 SystemPages 值設為零,並在 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 登錄值可控制堆集管理員在解除 (或釋出) 記憶體之前所需的可用空間。預設值為零,這表示堆集管理員會在每個 4 KB 分頁可供使用時,解除該分頁的委託。經過一段時間,虛擬地址空間就會變成分散的片段。在有 1 GB 或更多實體記憶體的伺服器上,您應將登錄機碼設定成較高的值,以降低分散程度。

如需如何設定 HeapDeCommitFreeBlockThreshold 登錄值的詳細指示,請參閱<如何設定 HeapDeCommitFreeBlockThreshold 登錄值>。