作為管理員,我們需要密切的監控Exchange Server Store的性能狀態。下面的一些性能計數器是我們需要時刻關注的:
MSExchangeIS\Active User Count
MSExchangeIS\User Count
上面這兩個計數器,反映了當前服務器上的活動用戶數和登陸用戶數。一般性,Active User Count總是小于User Count。由于Exchange Server內部使用了一些系統郵箱用來進行服務器間通信,因此即使沒有任何使用者在線,User Count也總是維持在20左右,這是正常的。
MSExchangeIS\RPC Averaged Latency
MSExchangeIS\RPC Operations/sec
MSExchangeIS\RPC Packets/sec
MSExchangeIS\RPC Requests
上面四個計數器,反映了Exchange Server Store的RPC處理響應能力。這幾個計數器,最能體現當前服務器的負載和響應速度。RPC Operations/sec、RPC Packets/sec分別表示服務器每秒接收到的RPC請求(所有Outlook MAPI客戶端連接在讀取、發送郵件時都會向服務器發送大量的RPC請求)。RPC Requests表示Exchange Server當前正在處理的請求,一般情況下,Exchange Server最多能同時處理100個請求,因此如果這個計數器超過了100,Exchange Server將會有嚴重的性能問題。最后一個也是最重要的一個,RPC Averaged Latency,這個計數器表示當前時刻之前的1024個RPC請求的平均響應時間,這個時間的單位是毫秒,一般性,這個計數器應該小于20。如果該計數器大于100并且持續較長的時間,客戶端Outlook的響應速度將變得很慢甚至死機。
對RPC Averaged Latency有影響的因素很多。執行備份、在線碎片整理、防病毒軟件掃描數據庫等等都會使RPC Averaged Latency的值升高。另外,值得注意的是,網絡環境的不正確配置,也會引起問題。筆者曾遇到過由于交換機端口的速度與Exchange Server上的網卡速度不匹配而引起的嚴重性能問題。詳細的情況是這樣的,客戶郵件系統的性能突然大幅度的下降,RPC Averaged Latency的值高達5位數,所有用戶都不能打開郵箱。在排除Exchange和Windows的問題后,我們從客戶處了解到,他們前一天更換了與Exchange Server相連的交換機。按理說,Exchange Server是應用層的軟件,它不會也不應該對數據鏈路層的設備有任何的依賴。但是查過微軟的知識庫以后,我們找到這了這篇文章:“Poor Performance When Network Adapter Is Set to Auto Sense”,文章的知識庫號碼為330343。文中提到,對于Exchange Server,如果網卡或者交換機端口設置為自動檢測速度,這可能會造成嚴重的性能問題。首先查看Exchange Server,其網卡的設定為100M 全雙工,符合微軟的要求;再連接到交換機上察看,發現交換機上跟Exchange Server網卡相連的那個端口,被設定為Auto即自動檢測速度,當前的連接情況為100M 半雙工。改為固定的100M全雙工設定以后,故障立刻消失,RPC Averaged Latency的值恢復到了20以下,用戶收發郵件都沒有問題了。
事后我們分析,對于Exchange Server的系統,有可能微軟在傳送RPC信息時,使用了一些特殊格式的數據包,因此對網絡鏈路有較高的要求。交換機一般都是上電之后直接使用,對它的設定往往很容易被管理員們所忽略。
MSExchangeIS\VM Largest Block Size
MSExchangeIS\VM Total 16MB Free Blocks
MSExchangeIS\VM Total Free Blocks
MSExchangeIS\VM Total Large Free Block Bytes
這四個計數器跟Exchange Server Store進程的內存使用情況有關。我們都知道,在Exchange Server上,store.exe進程往往是內存消耗的大戶,ESE數據庫引擎為了提高它的性能,需要申請大量的內存作為其緩存空間,在有300個以上用戶的Exchange Server系統上,store.exe進程的物理內存占用量一般都在1GB以上。在Windows操作系統中,內存分為物理內存和虛擬內存。物理內存指機器上安裝的內存條;虛擬內存指CPU可以尋址的內存范圍。對于Windows 2000來說,物理內存的大小由安裝的內存多少決定,虛擬內存默認情況下都是4GB。(關于Windows 2000內存的更進一步知識,讀者可以參考Inside Windows 2000這本書的第六章:內存管理。)如下圖的左面部分所顯示,每一個進程都有4GB的地址空間,默認情況下,2GB為操作系統所有,2GB為應用程序使用。
498)this.style.width=498;">
Exchange Server在運行過程中,會頻繁的在它所擁有的2GB用戶地址空間中分配和釋放內存。這樣會引起內存地址空間的“碎片”:內存地址中的空余的空間變得不連續。上述的四個計數器中,VM Largest Block Size表示用戶地址空間中最大的連續空余內存塊;VM Total 16MB Free Blocks表示尺寸在16MB以上的連續空余內存塊的數目;VM Total Free Blocks表示總的空余內存塊的數量;VM Total Large Free Block Bytes表示空余內存的總數量。
當VM Largest Block Size的數量小于32M時,事件察看器中會記錄下編號為9582 的Warning日志;當VM Total 16MB Free Blocks為零也就是最大可分配內存空間小于16MB時,事件察看器中會記錄下編號為9582 的Error日志。
Source: MSExchangeIS
Category: Performance
ID: 9582
Type: Warning/Error
Description:
The virtual memory necessary to run your Exchange server is fragmented in such a way that performance may be affected. It is highly recommended that you restart all Exchange services to correct this issue.
這種情況出現,說明Exchange Server的虛擬地址空間中已經存在了大量的碎片,由于無法滿足內存的分配,Exchange Server的性能和穩定性都會出現問題。
對于這類問題,大家可以參考微軟的知識庫文檔“Troubleshoot Virtual Memory Fragmentation in Exchange 2003 and Exchange 2000”,其文檔代號為325044。這篇文章詳細地分析了虛擬內存碎片產生的原因和應對辦法。
為了滿足服務器軟件對內存的要求,微軟公司的Windows 2000 Advanced Server和Data Canter版本的操作系統支持把用戶地址空間擴大為3GB,這樣可以有效的緩解虛擬內存碎片的問題。該項功能需要在系統分區的boot.ini中做一定的修改才可以開啟,具體的操作方法請參考微軟文檔“A Description of the 4 GB RAM Tuning Feature and the Physical Address Extension Switch”其文章代號為291988。
對于Exchange 2000 Server,當服務器安裝了1GB以上的RAM時,微軟推薦開啟操作系統的3GB開關,否則可能會有性能上的問題。參考文檔:
266096 Exchange requires /3GB switch with more than 1 GB RAM
328882 Exchange memory use and the /3GB switch