如何在Exchange 2003中優化內存
發表于:2007-06-13來源:作者:點擊數:
標簽:
警告 :注冊表編輯器使用不當可造成嚴重問題,這些問題可能需要重新安裝操作系統。Microsoft 不保證能夠解決因為注冊表編輯器使用不當而產生的問題。使用注冊表編輯器需要您自擔風險。本文介紹了運行 Exchange Server 2003 的計算機上的內存使用的優化。 如
警告:注冊表編輯器使用不當可造成嚴重問題,這些問題可能需要重新安裝操作系統。Microsoft 不保證能夠解決因為注冊表編輯器使用不當而產生的問題。使用注冊表編輯器需要您自擔風險。本文介紹了運行 Exchange Server 2003 的計算機上的內存使用的優化。
如果運行 Exchange Server 2003 服務器上安裝了 1 GB 以上的物理內存,則必須確保 Exchange Server 2003 可以有效地使用該內存。
注意:Exchange Server 2003 在存儲進程啟動時執行最佳內存配置檢查。如果內存設置不是最佳的,事件查看器中將會出現事件 9665。如果存在下列任一條件,則會顯示此消息:
• |
服務器正在運行 Microsoft Windows 2000 Server,并且注冊表中的 SystemPages 值超出了 24000 到 31000 這一范圍。 |
• |
服務器具有 1 GB 或更多內存,并且沒有 /3GB 開關。 |
• |
服務器正在運行 Microsoft Windows Server 2003,具有 1 GB 或更多內存,并且設置了 /3GB 開關,但是不存在 /USERVA 設置或者該設置超出了 3030 到 2970 這一范圍。 |
如果您看到此事件,請檢查注冊表中的 SystemPages 和 HeapDeCommitFreeBlockThreshold 設置,并檢查 Boot.ini 文件中的
/3GB 開關和
USERVA 設置。本文的下列各部分包含對所有這些設置的推薦設置。 如果您要關閉內存配置檢查,可以創建以下注冊表項:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem
參數:Suppress Memory Configuration Notification
類型:REG_DWORD
設置:
1運行 Microsoft Small Business Server 的服務器上不會發生內存配置檢查。當引發 9665 事件時,DWORD 會作為附加數據寫入事件日志中。
虛擬地址空間概念
Exchange Server 2003 中的信息存儲 (Store.exe) 進程可以處理的內存數量是有限制的,這與硬件配置、服務器上的數據庫數量以及用戶數量無關。此數量稱為虛擬地址空間。大多數情況下,信息存儲區使用的此虛擬地址空間決定 Exchange Server 2003 郵箱服務器的總體性能和可伸縮性。對于中小型服務器,Exchange Server 2003 會自動使平衡達到最佳狀態。但是,對于大型服務器,您可能需要手動調整一些優化參數。
如果您的 Exchange Server 2003 計算機安裝了 1 GB 或更多內存,并且如果計算機是郵箱或公用文件夾的宿主,請確保向服務器上的 Boot.ini 文件添加
/3GB 開關。如果服務器上沒有任何郵箱或公用文件夾(如郵件網關),請不要使用
/3GB 開關。默認情況下,Microsoft Windows 2000 Advanced Server 和 Windows Server 2003 操作系統保留 2 GB 虛擬地址空間供內核模式使用,保留 2 GB 供用戶模式使用。特定進程的虛擬地址空間在啟動時分配,并且在操作期間隨著內存使用的增加而增加。通常情況下,進程實際使用的內存(工作集)大大少于分配給該進程的地址空間。在安裝有 1GB 或更多內存的、運行 Exchange Server 2003 的計算機上,必須修改 Windows 2000 Advanced Server 和 Windows Server 2003 操作系統,以便有 3 GB 的用戶模式內存空間可用。您可以通過在 Boot.ini 文件中使用
/3GB 開關來完成此操作。
如果您運行的是 Windows 2000 Server Standard Edition,請不要設置
/3GB 開關。Windows 2000 Server Standard Edition 不支持此內存調整開關。如果您這樣做,服務器不會生成錯誤信息,但是設置此開關會導致存在假內存地址空間。如果某個進程試圖訪問這個較大的地址空間,藍屏上則會出現一條“Stop”(停止)錯誤信息,服務器將停止響應。
注意:Windows Server 2003 的所有版本(包括 Windows Server 2003 Standard Edition)都支持
/3GB 調整開關。 有關如何設置 /3GB 開關的其他信息,請單擊下面的文章編號,以查看 Microsoft
知識庫中相應的文章:
266096XGEN:Exchange 2000 Requires /3GB Switch with More Than 1 Gigabyte of Physical RAM
如果您在基于 Windows Server 2003 的計算機上運行 Exchange Server 2003,并且設置
/3GB 開關,則 Microsoft 建議您在 Boot.ini 文件中設置
/USERVA=3030 參數。這樣,服務器上就可以有更多的系統頁目錄項 (PTE)。 有關 /USERVA 開關的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
810371XADM:Using the /Userva Switch on Windows 2003 Server-Based Exchange Servers
確保 Store.exe 進程不會將虛擬地址空間用盡。當虛擬地址空間耗盡時,即使有大量物理 RAM 可用,內存分配也將失敗。要解決此問題,您必須重新啟動信息存儲服務。例如,具有 2 GB 物理 RAM、但沒有在 Boot.ini 文件中設置
/3GB 開關的服務器在 Store.exe 進程所使用虛擬地址空間達到 2 GB 時將會出現內存不足的情況。在這種情況下,Windows 任務管理器可能會顯示實際只使用了大約 1.5 GB 的內存。但是,服務器確實內存不足,并且必須重新啟動信息存儲服務。
當 Store.exe 進程的虛擬內存不足時,Exchange Server 2003 服務器的性能可能會大大降低。當最大的可用虛擬內存塊減至 32 MB 時,事件查看器的應用程序日志中會生成事件 ID 9582 警告事件。如果您看到此事件,下次有機會時最好重新啟動 Store.exe 進程。如果最大內存塊減少的更多,只有 16 MB,則事件查看器的應用程序日志中會生成事件 ID 9582 錯誤事件。如果發生此事件,則服務器已接近臨界操作條件,下次有機會時必須重新啟動服務器。發生此錯誤后,內存可能會在幾個小時內耗盡。如果您沒有響應這些事件,可能會遇到下列癥狀中的一個或多個:
• |
間歇性消息傳遞故障。 |
• |
由事件 ID 12800 指示的間歇性 Internet 郵件 (IMAIL) 轉換過程故障。 |
• |
某些支持 Exchange 的防病毒程序可能會生成錯誤信息或事件。 |
最大化虛擬地址空間
要確保性能和穩定性不會降低,最好監視大型郵箱服務器上信息存儲的虛擬地址空間。完成此操作的最簡單方法是,在“性能”實用工具中監視 MSExchangeIS 性能對象的虛擬內存最大塊大小計數器。該值以字節為單位進行顯示。啟動計算機后,通常應查看最大虛擬內存塊大小是否明顯減少。但是,經過一兩天的運作后,該值會接近通常的操作級別。如果最大可用虛擬內存塊的值大于 200,000,000 字節(大約 200 MB),則表示服務器運行正常。如果您發現值小于該數值,請更加親切地監視服務器。如果您遇到虛擬地址空間不足的情況:
1. |
如果您安裝了 1 GB 或更多物理內存,當服務器滿足下列條件時,請確保在 Boot.ini 文件中設置 /3GB 開關:
• |
服務器是郵箱或公用文件夾的宿主。 |
• |
操作系統是 Windows 2000 Advanced Server 或 Windows Server 2003。 | 如果服務器上沒有任何郵箱或公用文件夾(如郵件網關),請不要使用 /3GB 開關。 |
2. |
如果 Exchange Server 2003 安裝在基于 Windows Server 2003 的服務器上,并且它設置了 /3GB 開關,請確保在 Boot.ini 文件中設置 /USERVA=3030 開關。如果 Exchange Server 2003 安裝在基于 Windows 2000 的服務器上,請確保該服務器運行的是 Windows 2000 Service Pack 3 (SP3) 或更高版本。 |
3. |
如果您安裝了 1 GB 或更多物理內存,請在以下注冊表項中配置 HeapDeCommitFreeBlockThreshold 注冊表值,然后重新啟動服務器:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager值名稱:HeapDeCommitFreeBlockThreshold
數值類型:REG_DWORD
值數據:0x00040000(推薦)
默認值:不存在 有關如何使用和配置此注冊表值的其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
315407XADM:The "HeapDecommitFreeBlockThreshold" Registry Key |
通常情況下,前面的步驟可以解決虛擬地址空間使用問題。不過,在一些較大的服務器上,您可能必須對“存儲數據庫緩存大小”進行其他調整,才可重新平衡性能與可伸縮性之間的差距。
存儲數據庫緩存大小
存儲數據庫緩存也稱為 ESE 緩沖區,在數據庫事務被提交到存儲區之前,該緩沖區為這些事務提供較大的緩存區域。默認情況下,Exchange Server 2003 會查詢本地計算機的內存配置,然后分配 896 MB 的 RAM(如果 Boot.ini 文件中設置了
/3GB 開關),或者分配 576 MB 的 RAM(如果沒有設置
/3GB 開關)。如果服務器負載過重,或者如果磁盤性能不是最佳,則使用較大的 ESE 緩沖區會提高系統的總體性能。根據您的配置,您可能必須增加或減小此緩沖區的大小,以便獲得最佳的總體性能。
如果 Exchange Server 2003 所在的環境中存在其他服務器端程序,則它可能會獨占可用的內存資源?!皠討B緩沖區分配”(DBA) 算法負責在其他程序需要內存時將內存歸還給操作系統。不過,您可以通過減小 ESE 緩沖區手動限制 Exchange Server 2003 使用的內存。
在具有 2 GB 以上內存的服務器上,增加 ESE 緩沖區大小可能會有所幫助。由于虛擬地址空間限制,該值不能大于 1,200 MB。
增加最大緩沖區大小之前,最好使用 Windows“性能”實用工具監視具有典型負載的服務器上的內存。為此,請監視以下性能對象和值:
性能對象:進程
性能計數器:虛擬字節
實例:STORE
在性能監視期間收集的信息可為您提供 Store.exe 進程已分配的虛擬地址空間的準確值。在 Boot.ini 文件中設置了
/3GB 開關的服務器上,“性能”實用工具中顯示的值通常小于 2.8 GB。在 Boot.ini 文件中設置
/3GB 開關的服務器上,顯示的值通常小于 1.8 GB。在安裝了 1 GB 或更多內存的服務器上,最好向 Boot.ini 文件中添加
/3GB 開關。如果您看到的任一配置的值大于以前注意到的那些值,則不要增加最大緩沖區大小。如果您看到的任一配置的值小于以前注意到的那些值,可能需要增加數據庫最大緩沖區大小。
例如,如果您的服務器在 Boot.ini 文件中配置了
/3GB 開關,而且性能監視在服務器負載過重時顯示 2.5 GB 的虛擬字節計數,則您或許可以將最大緩沖區大小增加 300 MB 左右,使總大小為 1,200 MB。
增加緩沖區大小可能會對服務器性能產生不利影響。緩沖區越大,意味著使用的虛擬地址空間越多。因此,如果您的服務器遇到虛擬內存地址空間限制,增加緩沖區大小可能會導致操作系統不穩定。在非常大的郵箱服務器上,可能必須減小默認的緩沖區大小才可防止系統不穩定。
如何修改 ESE 緩沖區大小
msExchESEParamCacheSizeMax 參數控制 ESE 緩沖區大小。它的值以頁計數的形式表示,并且必須設置為 8192 的精確倍數才可實現最大效率:
• |
設置了 /3GB 開關的服務器上的默認大?。?B>229376 (896 MB) |
• |
沒有設置 /3GB 開關的服務器上的默認大?。?B>147456 (576 MB) |
• |
推薦使用的最大值:307200 (1.2 GB) |
• |
具有地址空間限制的大型服務器上的推薦值:196608 (768 MB) |
注意:如果 ESE 緩沖區大小設置的較大,事務日志的重放速度會大大加快。如果需要進行災難恢復,可能需要將 ESE 緩沖區大小暫時增大為
307200。
如果已經將 Exchange 5.5 Server 計算機就地升級到了 Exchange 2000 Server,您可能會注意到為
msExchESEParamCacheSizeMax 參數分配了一個異常高的值。在有些服務器上,該值等于 2,048 MB。在這種情況下,請刪除該參數或將其重置為更適當的值。要修改存儲數據庫緩存大小,請執行下列操作:
1. |
啟動“ADSI 編輯”實用工具?!癆DSI 編輯”包含在 Windows 支持工具中,它位于 Windows 2000 或 Windows Server 2003 CD-ROM 的 Support\Tools 文件夾中。 |
2. |
在“配置容器 [servername.example.com]”(其中 servername.example.com 是服務器的完全限定域名 FQDN)下,展開“CN=Configuration, DC=example, DC=com”。 |
3. |
依次展開 “CN=Services”、“CN=Microsoft Exchange”、“CN=組織名稱”(其中,組織名稱是您組織的名稱)、“CN=Administrative Groups”、“CN=第一個管理組”(其中,第一個管理組是您管理組的名稱)、“CN=Servers”和“CN=服務器名稱”。 |
4. |
在“CN=服務器名稱”下,右鍵單擊“CN=InformationStore”,然后單擊“屬性”。 |
5. |
在“請選擇要查看的屬性”列表中,單擊“兩者”。 |
6. |
在“請選擇要查看的屬性”列表中,單擊“msExchESEParamCacheSizeMax”。
注意:msExchESEParamCacheSizeMax 屬性超出了“請選擇要查看的屬性”列表的寬度。確保不要無意中單擊“msExchESEParamCacheSizeMin”屬性。 |
7. |
在“編輯屬性”框中,鍵入要分配給此屬性的值。
注意:確保您輸入的值是 8,192 的倍數。 |
8. |
單擊“設置”,然后單擊“確定”。 |
9. |
退出“ADSI 編輯”實用工具,然后留有足夠的時間以便將該值復制到整個 Active Directory 林中。 |
10. |
在 Exchange 服務器上重新啟動 Microsoft Exchange 信息存儲服務. |