核心概念:應用程式集區
將一或多個應用程式連結至一或多個工作進程集合的配置。**工作進程邊界隔離** 不同集區應用程式,單一集區故障不波及其他,大幅提升可靠性。
兩種工作模式 (Win2003)
- IIS 6.0 工作進程隔離模式 (預設): 所有程式碼在隔離環境運行,支援多集區、不同配置、直接從核心接收請求、效能與可靠性增強
- IIS 5.0 相容模式: 單一進程模型,不支援集區隔離
切換:IIS 管理員 → 右鍵網站 → 「內容」→ 選擇模式

建立應用程式集區
- IIS 管理員 → 本機電腦 → 右鍵「應用程式集區」→ 新增 → 「應用程式集區」
- 輸入名稱,ID 自動產生可修改
- 可選「使用現有集區為範本」快速複製設定

指派應用程式至集區
- 右鍵應用程式 (虛擬目錄/網站) → 「內容」→「主目錄」
- 確認「應用程式名稱」已填寫 (未填點「建立」)
- 「應用程式集區」下拉選單選擇目標集區 → 確定

集區屬性四大分頁深度解析
1. 回收 - 核心穩定機制
定期重啟工作進程,釋放資源、修復洩漏、恢復異常狀態。
- 預設: 1740 分鐘 (29 小時) 回收一次
- 觸發條件: 時間間隔、請求數、排程時間、記憶體上限 (實體/虛擬)
- Overlapped Recycle (預設): 新進程啟動接管新請求,舊進程處理完佇列請求後正常結束,TCP 連線由 HTTP.sys 維持不中斷。**Session 狀態會遺失**
- 禁用 Overlap: 設定
DissallowOverlappingRotation = 1,舊進程結束後新進程才啟動 (適用單實例應用)
- 孤兒進程除錯: 設定
OrphanActionExe 執行除錯工具,保留失敗進程分析
- 事件日誌:
LogEventOnRecycle = 1 記錄回收事件
2. 效能 - Web Garden 與 CPU 親和性
- Web Garden: 單一集區啟動多工作進程 (設「最大工作進程數」>1),循環分發請求 (Round Robin),構建單機小型 Web Farm
- 負載輕時自動縮減進程 (預設 20 分鐘),重時自動擴展
- Session 注意: Web Garden 下各進程擁有獨立 Session/Application/快取/靜態資料,**需確保用戶請求黏著至同進程** (保持連線開啟或使用外部 Session State Server/SQL Server)
- SMP 親和性:
SMPAffinitized = true + SMPProcessorAffinityMask (十六進制遮罩) 將進程綁定特定 CPU 核心

3. 健康偵測 - 自動故障隔離
- 定期 Ping 工作進程 (預設 30 秒)
- 啟動/關閉時間限制
- 快速失敗保護:指定時間內達到失敗閾值則禁用集區
- ISAPI 應用程式可主動宣告不健康觸發回收

4. 身分識別 - 執行安全內容
- 預設:**Network Service** 低權限帳號
- 可配置自訂帳號:選「可設定」→ 輸入用戶名/密碼 → **必須加入 IIS_WPG 群組**
- 加入 IIS_WPG 步驟:
「我的電腦」右鍵 → 管理 → 本地用戶和群組 → 群組 → IIS_WPG → 加入帳號

關鍵參數對照表 (ASP.NET processModel ↔ IIS 6 集區)
| 集區設定 | 對應 processModel 屬性 | 說明 |
| 閒置逾時 | idleTimeout | 預設 20 分鐘無活動則關閉 |
| 要求佇列限制 | requestQueueLimit | 預設 1000,回收期間排隊上限 |
| 記憶體回收 (實體/虛擬) | memoryLimit | MB 為單位,非百分比;支援分別設定實體/虛擬上限 |
| 請求數回收 | requestLimit | 達指定請求數觸發回收 |
| 時間間隔回收 | timeout | 預設 120 分鐘 (註:文中另有 1740 分鐘預設,以 UI 為準) |
Web Garden 參數行為變化摘要
PeriodicRestartTime:改為**所有進程輪流回收的總間隔** (如 4 進程 20 小時 → 每 5 小時回收 1 個)
PeriodicRestartRequests:改為**所有進程輪流回收的總請求數**
PeriodicRestartSchedule:**同時回收所有進程**
RapidFailProtection:統計**整個 Garden 總失敗數**比較閾值
IdleTimeout:每進程**獨立計算**
- 進程崩潰時替代進程繼承
PeriodicRestartTime 剩餘運行時間
操作檢查清單
- 每個獨立網站/應用程式建立專屬集區
- 根據流量設定合理回收條件 (時間/記憶體/請求數)
- 啟用記憶體上限 (實體+虛擬) 防止單一應用耗盡資源
- Session 應用**禁用 Web Garden** 或改用外部 Session State
- 生產環境集區身分識別使用專用低權限帳號並加入 IIS_WPG
- 監控事件日誌回收記錄、健康偵測失敗事件
- 高 CPU 多核心伺服器配置 SMP 親和性提升緩存命中率