有限連線連接埠將網際網路流量分配至多個代理閘道

高並行代理工作開始出現間歇性連線逾時、重設或位址配置錯誤時,瓶頸不一定在代理集區。用戶端主機、容器節點、防火牆、負載平衡器或來源 NAT 裝置,都可能耗盡可用來源連接埠映射。

此問題容易被誤判為「代理 IP 不好」,因為更換代理端點有時會改變連線五元組並暫時緩解壓力。長期解法是找出連接埠消耗位置、減少無效新建連線,並以證據規劃每個轉換邊界的容量。

一、理解有限資源

出站 TCP 連線由來源位址、來源連接埠、目的位址、目的連接埠和協定標識。作業系統為新連線選擇暫時來源連接埠,NAT 裝置還可能配置另一個外部來源映射。

容量不是通用數字,而由暫時連接埠範圍、來源位址數量、遠端代理端點、NAT 行為、連線壽命、TIME_WAIT、重用政策和保留連接埠決定。多個容器可能共享同一節點或公用 SNAT 位址並競爭資源。

不要把名義範圍當作可用容量。請測量實際系統與網路裝置,並為其他流量、突發及容錯移轉保留餘量。

二、識別典型故障模式

來源連接埠壓力通常同時具備以下線索:錯誤隨每秒新建連線上升,而非總請求數;重用連線後錯誤下降;大量通訊端停在 TIME_WAIT 或關閉狀態;故障集中在共享節點或 SNAT 位址的 worker;增加來源位址或 NAT 容量後改善;重試放大第一個逾時;既有連線正常而新連線失敗。

這些不是單獨證據。代理驗證、DNS、TLS、目的端節流和供應商容量也會產生類似現象,必須保留錯誤層級與類別。

三、畫出所有轉換邊界

依序繪出應用程序、容器或虛擬機網路、主機防火牆、Kubernetes 節點或出口閘道、雲端 NAT 或企業防火牆、代理閘道位址與連接埠。

在每個邊界記錄轉換前後來源位址、連接埠政策、目前連線數、每秒新建連線、關閉狀態分布、閒置逾時和負責人。節點本機連接埠可能充足,但共享 NAT 已飽和;反過來也可能發生。

四、測量連線而非只看請求

請求數不足以描述壓力,因為一條連線可承載一次或多次請求。至少收集新建連線嘗試與成功率、並行已建立連線、重用比例、各狀態通訊端數量、連線與閒置壽命分位數、連線逾時與重設、位址配置錯誤、407、TLS、429、5xx、來源節點與 NAT 位址、代理端點和連接埠、每個原始工作的重試數,以及有效完成結果。

時間統一使用 UTC,用戶端標識採聚合或遮蔽。不可記錄代理密碼、授權標頭、Cookie 或客戶內容。

五、估算安全容量

為每個來源位址和轉換邊界建立工作表。粗略規劃關係為:

所需映射數 ≈ 每秒新建連線數 × 平均映射占用時間

占用時間包括連線活動期,以及關閉後作業系統或 NAT 仍保留映射的時間。這只是估算,不能替代實測。

大量短連線可能比請求更高但連線池穩定的工作消耗更多連接埠。還要為流量突發、容錯移轉、健康檢查、控制平面流量及 NAT 位址負載不均保留安全餘量。

應針對實際目的端五元組測試上限。部分系統可在不同遠端五元組間重用同一來源連接埠,但幾乎全部連到單一代理閘道的工作負載,五元組多樣性較低。

六、減少不必要的新建連線

優先改善連線重用:在雙方支援時啟用 keep-alive;依代理端點及認證資料範圍建立有上限的連線池;不要每次請求後關閉健康連線;對齊用戶端、NAT、防火牆及代理的閒置逾時;限制同時新建連線;為 worker 啟動和連線池回填加入抖動;不要因每個應用錯誤都更換端點;區分目的端 429 與代理連線錯誤。

重用必須遵守身分邊界。協定或政策不允許時,不可跨使用者、租戶、認證資料或工作階段共用連線。可參考代理連線池指南HTTP/2 代理連線重用稽核

七、擴充前先控制重試

無上限重試會形成正回饋:連線失敗後同時開啟多個替代連線,連接埠壓力繼續上升,造成更多失敗。應依原始工作設定重試預算,採用指數退避、抖動及系統性故障斷路器。

不要對每個 403、407 或 429 都更換 IP。407 通常是代理驗證,429 是節奏訊號,403 可能是政策拒絕。先分類再重試,可搭配代理重試預算指南

八、擴充真正受限的層

降低連線 churn 後,只擴充已證實的瓶頸:增加用戶端來源位址或節點;分散至更多獲准 NAT 位址;採用每個目的端映射容量足夠的託管 NAT;在獲准代理閘道地址或連接埠間分片;隔離高 churn 與低延遲工作;只有檔案描述元或連線上限被獨立確認時才調整。

增加代理出口 IP 不一定增加用戶端暫時連接埠;擴大本機範圍也不能修復飽和的共享防火牆。每次只變更一個容量邊界並驗證結果。

九、執行受控階梯測試

選擇具代表性、已授權的目的端和非敏感資料,在請求行為不變時逐級提高並行度。每級記錄新建連線、已建立連線、重用率、TIME_WAIT、NAT 配置、連線延遲、錯誤類別、重試與有效結果。

每級維持足夠時間,讓關閉狀態和 NAT 計時器穩定。達到預先約定門檻就停止,不可故意耗盡共享生產閘道。每項緩解措施後重測;有效變更應提高有效吞吐並降低錯誤,而非把故障轉移至另一節點。

十、驗證容錯移轉餘量

正常情況下流量可能分散於多個來源位址。節點或區域故障後,剩餘路徑會承接負載,容量規劃必須涵蓋最大可信容錯移轉場景。

受控移除一個 worker 或出口路徑,確認剩餘 NAT 位址、檔案描述元、連線池與代理閘道低於門檻。可與代理容錯移轉復原演練搭配。

診斷檢查清單

  • 錯誤已與每秒新建連線關聯。
  • 既有連線與新建連線分別測量。
  • 主機、容器、防火牆和 NAT 邊界均已繪製。
  • 疑似瓶頸處已觀察通訊端狀態與 NAT 映射。
  • 代理、TLS、驗證、目的端及連接埠錯誤保持分離。
  • 連線池遵守端點與認證資料邊界。
  • 重試有預算、退避與抖動。
  • 容量計算包含占用時間及容錯移轉餘量。
  • 變更針對已證實限制,而非假設的代理問題。
  • 階梯測試在共享資源耗盡前停止。
  • 紀錄不含認證資料或敏感內容。

常見問題

TIME_WAIT 很多就表示連接埠耗盡嗎?

不一定,它是正常 TCP 狀態。只有與高連線 churn、有限五元組、配置失敗和有效吞吐下降同時出現時才具有診斷價值。

增加更多住宅代理 IP 能解決嗎?

不一定。若瓶頸在用戶端或共享 SNAT,更多出口庫存不會改變受限來源映射,應擴充真正出現配置壓力的層。

是否應大幅縮短 TCP 計時器?

核心或設備計時器變更可能影響正確性及其他工作。應先改善重用、限制連線建立並擴充容量,只在平台指引與受控測試支持時才修改。

為什麼舊連線正常而新連線失敗?

既有連線已持有連線狀態與映射,新連線需要新來源連接埠及 NAT 項目,因此配置壓力通常先影響新連線。

合規說明

只在獲准基礎設施、代理閘道與目的端執行容量測試。遵守供應商並行限制及目的端政策,避免突發流量,保護認證資料,最小化連線資料保存,並在共享服務健康有風險時立即停止。