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

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

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

![先找到你網站的所屬的應用程式集區(Application Pool)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c0819e98bbdf431a2e08-image_6.png)

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

![網際網路資訊服務 (IIS) 管理員 ::: 應用程式集區 ::: DefaultAppPool ::: 內容](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/055427cbc1ce8b69b975-image_3.png) 

![網際網路資訊服務 (IIS) 管理員 ::: 應用程式集區 ::: DefaultAppPool ::: 內容  ::: 回收處理](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/bba8fb3d1c7d16e56324-image_9.png)

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

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

* * *

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

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

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

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

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

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

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

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

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

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

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

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

**最大虛擬記憶體**

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

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

**最大已使用記憶體**

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

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

* * *

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

**相關連結**

-   [IIS 6.0 中的工作者處理序隔離模式](https://learn.microsoft.com/zh-tw/iis/get-started/introduction-to-iis/introduction-to-iis-architecture)
-   [使用 IIS 6.0 回收工作者處理序](https://learn.microsoft.com/zh-tw/iis/get-started/introduction-to-iis/introduction-to-iis-architecture)
