什麼是 IIS 連接數?
IIS 連接數 (Web 連接數) = 同一時刻伺服器接受的並發 TCP 連接總數。
通俗理解:有多少個瀏覽器視窗/標籤頁正在同時請求你的網站資源。
連接建立與釋放生命週期
- 用戶輸入 URL / 點擊鏈接 → 瀏覽器解析域名 → 建立 TCP 連接 (三次握手)。
- 發送 HTTP 請求 (GET/POST/...)。
- 伺服器處理 → 回傳 HTTP 響應 (HTML/CSS/JS/圖片/JSON/...)。
- 瀏覽器接收 → 關閉連接 (四次揮手) 或 Keep-Alive 保持連接複用。
- 關鍵點:現代瀏覽器對同一域名預設並發 6 條連接 (HTTP/1.1),HTTP/2 單連接多路複用。
為什麼「一個頁面產生多個連接」?
- 頁面包含:HTML + 5 張圖片 + 3 個 CSS + 2 個 JS + 1 個字體 + 2 個 AJAX API = 14 個資源。
- 瀏覽器並發下載 (6 條/域名) → 瞬間產生 6-14 條並發連接。
- 資源下載完成 → 連接釋放/進入 Keep-Alive 池。
- 單次頁面瀏覽的連接佔用時間通常僅 10-200ms (視頻寬、伺服器速度、網路延遲)。
經驗估算公式
峰值 IIS 連接數 ≈ 同時在線瀏覽器數 × 平均並發連接數/瀏覽器
典型值:
- 靜態資源多、未合併壓縮:8-12 條/瀏覽器
- 啟用 Keep-Alive、資源合併、CDN 分流:3-6 條/瀏覽器
- HTTP/2 + 域名分片優化:1-2 條/瀏覽器 (多路複用)
實例:日均 26 萬 IP,觀察峰值 1800 連接 → 推算約 900 瀏覽器同時在線 (1800 ÷ 2)。
IIS 連接數限制與調優
1. 應用程式池隊列長度 (queueLength / appRequestQueueLimit)
- 預設:1000 (IIS 6) / 5000 (IIS 7+)。
- 超過限制 → 返回 503 Service Unavailable。
- 調大:
appcmd set apppool "DefaultAppPool" /queueLength:10000 或 Web.config <httpRuntime appRequestQueueLimit="10000" />。
2. 並發請求限制 (MaxConcurrentRequestsPerCPU / MaxConcurrentThreadsPerCPU)
- ASP.NET 4.0+ 預設:5000 請求/CPU、無限線程 (自動調節)。
- 舊版需手動調整
aspnet.config。
3. 網站層級連接限制 (IIS 管理員 → 網站 → 限制 → 連接數)
- 預設:無限制 (4,294,967,295)。
- 可設定上限防禦 CC 攻擊,但會誤傷正常高併發。
4. 核心模式設定 (http.sys 註冊表)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
MaxConnections (預設無限制)
MaxFieldLength / MaxRequestBytes (防大頭攻擊)
監控與告警指標
| 指標 | 來源 | 告警閾值建議 |
| Current Connections | IIS 計數器 / appcmd list wp / 監控 Agent | > 80% 佇列長度 或 > 歷史峰值 1.5 倍 |
| Connection Rejected (503) | IIS 日誌 / HTTP.sys 日誌 / 監控 | > 0 (任何拒絕即告警) |
| Queue Length | 應用程式池計數器 | > 50% 最大隊列 |
| TCP 連接狀態分佈 | netstat -an / Get-NetTCPConnection | TIME_WAIT > 10000 可能耗盡埠 |
優化策略:降低單用戶連接佔用
- 啟用 Keep-Alive:
httpProtocol allowKeepAlive="true",複用連接,減少握手。
- 資源合併壓縮:CSS/JS 合併、圖片 Sprite、WebP、Gzip/Brotli,減少請求數。
- 靜態資源上 CDN:卸載 80%+ 連接至邊緣節點。
- HTTP/2:單連接多路複用,頭部壓縮,顯著降低並發連接數 (需 HTTPS)。
- 域名分片 (HTTP/1.1 時代):
static1.domain.com, static2.domain.com 繞過 6 連接限制 (HTTP/2 下反模式)。
總結
IIS 連接數 = 並發 TCP 連接快照。
峰值估算 = 同時在線瀏覽器 × 平均並發連接。
限制調優 = 隊列長度 + 應用程式池併發 + http.sys 參數。
根治高連接 = Keep-Alive + 資源優化 + CDN + HTTP/2。
建立連接數基線畫像,異常即告警,從容應對流量洪峰與 CC 攻擊。