在了解 IIS 6.0 核心架構組件後,我們將重點探討應用程式集區的進階設定。應用程式集區的屬性對話框包含四個索引標籤:回收、效能、健康狀態與身分識別。其中「回收」頁面最為關鍵,它允許管理員設定工作進程的定期回收機制。在工作進程隔離模式下,IIS 可配置定期重新啟動集區中的工作進程,有效管理異常進程,確保應用程式穩定運行並回收流失的系統資源。
回收過程中,失敗的工作進程將停止接收新要求,並處理完要求佇列中剩餘的請求。替代工作進程會在舊進程停止前啟動,避免服務中斷。舊進程完成未決要求後正常關閉,若超過設定的時間限制、要求數、排程時間或記憶體閾值仍未關閉,則會被強制終止。預設情況下,應用程式集區每 1,740 分鐘(29 小時)回收一次。
W3SVC 依據「健康狀態」頁面的設定判斷集區運行狀況,包括:定期 Ping 工作進程(預設 30 秒)、啟動與關閉時間限制、以及快速失敗保護(若指定時間內多個工作進程失敗則禁用集區)。此外,ISAPI 應用程式(含 ASP.NET 與 asp.dll)可主動宣告不再適合服務並要求回收。
預設啟用「重疊回收」技術:失敗進程保持運行,同時建立新進程接管新請求,舊進程處理完佇列要求或逾時後關閉。此期間 HTTP.sys 維持 TCP/IP 連線不中斷。但需注意:舊進程逾時後,原進程中的 Session 資訊將遺失。所有回收操作自動完成,無需管理員介入,通常不造成明顯服務中斷。若需記錄回收事件,可將 LogEventOnRecycle 設為 1。
對於無法多實例運行的應用程式,重疊回收可能導致問題。此時可將 DisallowOverlappingRotation 設為 True 關閉重疊。若需保留失敗進程進行偵錯,可設定 OrphanActionExe 指定執行檔,使進程成為「孤兒」時仍保持運行。
IIS 6.0 支援將應用程式集區配置為 Web 園。概念上類比 IIS 5.0 時代在多個網站間輪循分發請求,但 IIS 6.0 無需建立額外網站,只需在「效能」頁設定「最大工作進程數」。負載輕時 IIS 會自動縮減進程數(預設 20 分鐘無負載後),負載重時自動增加,全程自動化。
此外,SMPAffinitized 與 SMPProcessorAffinityMask 兩個屬性允許將特定工作進程綁定至特定 CPU,優化多處理器系統上的效能表現。

本文從架構角度全面介紹 IIS 6.0 新特性,第二部分將涵蓋更多實用功能與預設配置變更,敬請期待。