2013年10月15日 星期二

[筆記] Sharepoint Foundation 2010與Exchange 2010共存時造成Sharepoint龜速問題的偷吃步解法:限制Exchange的記憶體使用量上限

公司的AD Server裡面同時在跑Exchange 2010跟Sharepoint 2010,因為Exchange的程式特性,把RAM幾乎都占用光了,導致扮演內網的Sharepoint速度奇慢,key個帳密驗證都可以等到兩三分鐘,同時三個人一起登入還曾經發生timeout的奇事,真的有點驚人。

接到老闆通知後,馬上思索了幾個方法,最直覺想到最有效的方法就是再買一台server把Exchange獨立出來,但是以正常狀況來說老闆不太可能願意花這麼多錢…把Exchange裝到Hyper-V裡面感覺又有點不切實際,怕費時費工又無法達到有感的加速效果。因此還是決定先找方法讓Exchange不要一次吃光所有的RAM試試。

首先用google可以很輕易的找到這篇

裡面除了寫到「64位元的硬體不需要去限制記憶體,ESE 會自動依OS可用記憶來使用最大的量」、「Exchange 的特性,就是給他越多記憶體,他吃越多當快取。在其他程式需要使用時,他會釋放沒用到的部分。」這些已經知道的部份外,還有人提供修改Exchange 2007使用RAM上限的方法(英文technet網頁):


為了寫報告方便所以還是要先自行翻譯成中文:

01. 啟動「ADSI編輯器」(開始 > 執行 > adsiedit.msc )。
02. 在「ADSI編輯器」中,右邊的「動作」子視窗中,點選『連線到...』 。(*註)
03. 在「連線設定」中,『連線點』的選項,選擇「選取熟知的命名內容」,然後在下拉選單中選擇『設定』。
04. 『電腦』的選項,選擇「選取或輸入網域或伺服器」,然後輸入自己的DC名稱。
05. 點選「進階」按鈕。
06. 在「進階」視窗中,勾選『指定認證』,然後在下面「認證」框格中輸入您的帳密。
07. 在『連接埠號碼』欄位中,輸入 389。
08. 在『通訊協定』的選項,選擇「LDAP」。
09. 按『確定』將「進階」視窗關閉。
10. 按『確定』將「連線設定」視窗關閉。
11. 在「ADSI編輯器」中,會看到一個名叫『設定』的DC容器物件出現。
12. 展開『設定』容器:Configuration/Services/Microsoft Exchange/<你的組織名稱>/Administrative Groups/<你的系統管理員群組名稱>/Servers/<伺服器名稱>/Information Store。
13. 滑鼠右鍵點選"Information Store",再左鍵點選「內容」。
14. 在「屬性編輯器」頁籤中,點選"msExchESEParamCacheSizeMax",再點按下面的『編輯』。
15. 在「整數屬性編輯器」視窗中,輸入要給Exchange Database的最大cache容量(以8KB為單位),再按『確定』。
  例:若要設成14GB,14GB = 14680064KB ,換算成以8KB為單位即為 1835008 (8KB)。故在此視窗中應輸入1835008。在「整數屬性編輯器」中請勿輸入逗點或句點。
16. 按『確定』將「Information Store 內容」視窗關閉。
17. 將「ADSI編輯器」關閉,然後重新啟動Exchange Server。

*註:我實際操作時,「動作」子視窗中,要先點『其他動作』,裡面才有『連線到...』,可能是OS版本的些許差異。我用的系統是SBS2011。



雖然版本有點不同,但是因為運作原理是一樣的,所以還是給他拿來嘗試一下,原本server只有16G的RAM,每次光store.exe就直接給他吃了快15G,這次測試我就把使用上限鎖在8G,看看能不能改善sharepoint的部份。

結果看起來效果還不錯,鎖定在8G後,store.exe的記憶體使用量大減,sqlservr.exe跟w3wp.exe的使用量大增,加起來用量也是比之前少的14G,業助實際使用sharepoint也覺得速度快了很多,感覺應該算是暫時解決掉這個問題了。但是要是之後人力擴充,使用者增加,到了8G已經不足給Exchange消化的時候,恐怕還是只能用添購硬體的方法來解決。