Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Windows 下實作第 7 層軟負載經驗分享(1)

編輯:Win7 系統基礎知識

四層負載基於 IP+Port,七層負載基於 URL 等應用層資訊。本文分析 Windows 平台實作第 7 層軟負載的效能與可靠性。

效能分析

  1. 外網連線管理與協定解析:用 http.sys (HttpApi.dll, HttpListener) 核心級機制,效能有保障。
  2. 內網 RealServer 連線管理與封包:用 HttpWebRequest 內建機制,但問題多:
    • 連線管理:預設每請求新建連線、收回應拆除,受連接埠限制 (65535) 導致出站連線不足。嘗試啟用 KeepAlive 解決。
    • 封包重組:HttpListener 解析後仍需重組為 HttpWebRequest 格式(複製 URI、Header、Cookie、Body),記憶體複製損耗效能,難以規避。
  3. 常規 Web 應用:Request 小、Response 大,回應仍須經 Proxy 轉發再複製,嚴重影響效能。無法像 LVS 做 Direct Route(需修改 MAC/IP 隧道/TCP 狀態遷移),成本太高。
  4. HTTP 協定限制:請求回應必須成對,預設同步等待回應才能送下一個請求。HTTP 1.1 pipeline 有限制(POST 不可用、首次請求不可用、批次大小難定、斷線多請求失敗),必然影響效能。
  5. HttpListener 非同步模式:APM 模式 (BeginXXX/EndXXX) 頻繁調用產生大量 IAsyncRequest 物件增加 GC 壓力,無自訂物件池介面。若支援事件型非同步 (XXXAsync) 可解決。
  6. 使用者/核心模式切換:HttpListener 為 .NET 封裝類在使用者模式,HTTP.SYS 在核心模式,收發請求需兩次模式切換降低效能。Linux LVS 可在核心態做 7 層轉發,Windows 需 TDI/NDIS 開發太複雜暫不考慮。

可靠性分析與容災方案

  1. 前端 4 層負載 + 多台 7 層軟負載共享雜湊策略:4 層按 Session 隨機分流,所有 7 層節點均可正確處理任一請求。單節點掛掉其餘續工,4 層 Keepalive 偵測移除故障節點。優先採用。
  2. 7 層軟負載雙機熱備 + ARP 欺騙漂移 IP:主機掛掉備機接管。屬山寨方案,切換可能造成短暫請求失敗,不優先考慮。
Copyright © Windows教程網 All Rights Reserved