如何設定 IIS 6 讓網站應用程式運作的更穩定

分享到噗浪!

最近有個客戶像我提及他們有台主機,IIS 每執行一段時間就會自動關閉,網站都連不上,他問我是不是 IIS 6 的問題?我回覆他:「要讓 IIS 6 出問題很難,通常這類的問題都是網站的 Application 出問題,才會導致網站被關閉。」但由於客戶的網站系統是一套購買來的系統,並無原始碼,也沒有修改的空間,這時若還是要提升該系統的穩定性,就必須要從「應用程式集區」下手。

首先,先找到你網站的所屬的應用程式集區(Application Pool)

先找到你網站的所屬的應用程式集區(Application Pool)

接者進行該應用程式集區的相關設定

網際網路資訊服務 (IIS) 管理員 ::: 應用程式集區 ::: DefaultAppPool ::: 內容 

網際網路資訊服務 (IIS) 管理員 ::: 應用程式集區 ::: DefaultAppPool ::: 內容  ::: 回收處理

如上圖紅線框住的地方,就是提升系統穩定性的關鍵,預設來說是不用設定這些參數的,但是當應用系統不穩定時,才有必要設定這些參數,讓系統能夠在服務特定次數後或設定特定時間進行回收(Recycle)動作,這裡的回收意思是指重新啟動應用程式集區的工作處理程序(Worker Process)(w3wp.exe)

這些參數的說明,可以在此頁按下 F1 即可跳出完整的說明,以下我將說明列出,並標注重點與註釋如下。


應用程式集區 - 回收處理索引標籤

使用此索引標籤管理工作者處理序的回收。在工作者處理序隔離模式中,您可以將 IIS 設定為在應用程式集區中定期重新啟動工作者處理序,讓您更精確地管理有瑕疵的工作者處理序。這樣確保這些集區中的指定應用程式保持狀態,而且系統資源得到恢復。

為了回收工作者處理序,將限制有錯誤的工作者處理序接收要求的能力,直到它處理完在要求佇列中儲存的所有剩餘要求。為了消耗其目前要求,將提供該處理序一個設定限制。在舊的工作者處理序停止之前,會啟動相同名稱區群組的替代工作者處理序。這可以防止服務中斷舊的處理序完成其待處理的要求,然後正常關閉,或者如果它在可設定的時間限制、要求數、設定排程之後,或達到指定的記憶體用量限制時仍未關閉,則會明確地終止該處理序。

回收工作者處理序 (分鐘)

選取即可在特定的不活動期限後回收工作者處理序。

回收工作者處理序 (要求數)

選取即可在特定數量的要求後回收工作者處理序。
(注: 這裡的要求是指 HTTP Requests,當網站接受超過特定要求後就自動回收的意思)

在下列時間回收工作者處理序

選取即可使用排程策略來關閉處理序並啟動替代處理序

  • 新增
            按一下即可將一天中的某個時間新增到排程式工作者處理序回收條件中。
  • 移除
            按一下即可移除工作者處理序回收的目前選取排程條件。
  • 編輯
            按一下即可修改工作者處理序回收的目前選取排程條件。

在耗盡太多記憶體後回收工作者處理序

此選項允許使用記憶體消耗限制配置,以關閉處理序啟動替代處理序。這些設定控制當工作者處理序使用的虛擬記憶體(virtual memory)專用記憶體(private memory),相對於系統記憶體總量(total system memory)變得過高時的記憶體回收臨界值。記憶體式回收適用於減少區段堆(heap fragmentation),以及從流失記憶體(memory leak)的應用程式回收記憶體。

最大虛擬記憶體

選取即可設定工作者處理序在回收之前,可以使用的最大系統共用虛擬記憶體數 (以 MB 計)。

如果輸入的值太大,則會嚴重地降低系統效能。開始時應使用預設值,然後在維護良好效能的同時盡可能降到最小值。

最大已使用記憶體

選取即可設定工作者處理序在回收之前,可以使用的最大私人配置系統實體記憶體數 (以 MB 計)。

如果輸入的值太大,則會嚴重地降低系統效能。開始時應使用預設值,然後在維護良好效能的同時盡可能降到最小值。


老實說,有些翻譯看起來很累且難以理解,所以難怪明明有很多系統文件可看,但大家都不看的原因。

相關連結

  

此文章由 will 發表於 2008/11/21 下午 04:24:02

永久連結 | 評論 (4) | 此文章的RSSRSS comment feed |

分類: ASP.NET | IIS | 系統管理

標籤: , ,

評論

十一月 22. 2008 23:08

tomexou

以前架bt應用程式,也發現記憶體用很兇
倒沒注意到iis有可限制的地方
都寫程式來刪process item。

感謝分享心得。

tomexou 台灣

二月 10. 2010 14:34

James

能否請Will大進一步說明"變更應用程式集區的回收處理設定對IIS更穩定"的關連性在那裡?

我想前提應該是已確認導致IIS不穩定的原因與記憶體使用不當有關。

所以至少有以下幾個項目要確認:

1.如何偵測出導致IIS不穩定的原因來自於記憶體使用不當。

2.如何測量增加/減少回收設定參數(分鐘數/要求數)對改善IIS穩定度有正相關?

3.同上,如何測量設定了最大記憶體使用限制後,對改善IIS穩定度有正相關?

4.即使手動設定更仔細的記憶體回收設定時,仍無法解決IIS不穩定時該如何處理。

我主要的問題是,如何評估最適當的設定,最好能夠量化。

James 台灣

二月 10. 2010 19:26

Will 保哥

James: 你的問題都很大,回答完這些問題大概也可以出一本書了,而且需要搭配很多工具才能進一步量化分析,而且不同的情境要用不同的工具,例如 CPU Hang、CPU High、Memory Leak、...,可用的工具大概有 Performance Monitor、Debugging Tools for Windows、WinDbg、adplus、...,除此之外,你還要有很深的知識基礎才有辦法理解這些難用工具所呈現的數值,這是一個非常費工的過程,很抱歉無法在部落格上回答你。

Will 保哥 台灣

二月 11. 2010 09:42

James

感謝回覆。

在工作上有遇到IIS不穩定的問題,而且是常常,但是從一般的Windowsh管理工具上是看不出有什麼問題,也無法有效定位問題在那裡。

之前也有聽說過Performance Monitor、Debugging Tools for Windows、WinDbg、adplus之類的工具,但礙於"很深的"基礎知識不足,也找不到系統化的查詢方式,網頁上的知識都比較片段,還找不到入手點。

有什麼書本或是網站對IIS Trouble Shooting有比較詳細的說明嗎?

James 台灣

新增評論


( 您輸入的Email不會顯示於網站上 )

  Country flag

biuquote
  • 評論
  • 線上預覽
Loading