IIS 6.0 引入的 Web 園 概念,允許單一應用程式池啟動多個工作進程(Worker Process),在單機模擬小型 Web Farm,提升多核 CPU 利用率與併發處理能力。但這把雙刃劍用不好,會帶來 Session 遺失、資源爭用、除錯困難等棘手問題。
IIS 管理器 → 應用程式池 → 屬性 → 「效能」頁籤 → 「Web 園」區塊 → 最大工作進程數(預設 1,上限 4,000,000,實務建議 ≤ CPU 邏輯核心數)。
| 風險類型 | 典型症狀 | 根因 |
|---|---|---|
| InProc Session 遺失 | 用戶頻繁被登出、購物車清空、驗證碼失效 | 請求輪詢至不同進程,各進程 Session 不共享 |
| 檔案/資源鎖衝突 | 寫入日誌/上傳檔案報「檔案被佔用」、存取違規 | 多進程同時操作同一檔案/資源,缺乏跨進程同步機制 |
| 靜態變數/快取不一致 | 設定修改不生效、快取資料新舊混雜 | 各進程維護獨立靜態副本 |
| CPU/記憶體壓力暴增 | 伺服器負載飆高、回應變慢 | 每進程消耗基礎資源 (私有記憶體、執行緒、控制代碼),N 進程 ≈ N 倍基礎開銷 |
口訣:Web 園是「單機模擬叢集」,沒做無狀態化就別開;開了必配外部 Session、分散式鎖、統一日誌,否則換來的是詭異 Bug 而非效能提升。