許多開發者誤以為 TCP 連線數受限於 65535 個連接埠,實則不然。伺服器端 Accept 連線時,作業系統僅配置一個通訊端控制代碼,不會消耗額外連接埠資源。理論上限取決於作業系統核心參數與記憶體資源。
登錄機碼 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters 中的 TcpNumConnections 預設值為 0x00fffffe(十進位 16,777,214),代表單機理論上可支援超過 1,600 萬個並發連線。實際上限仍受限於:
筆者於具備足夠記憶體的測試環境中,成功建立 6 萬個並發 Socket 連線,CPU 與記憶體使用率均在可接受範圍。關鍵在於使用非同步 I/O (SocketAsyncEventArgs) 避免執行緒耗盡,並調整登錄參數 MaxUserPort、TcpTimedWaitDelay 等加速連線回收。
SO_REUSEADDR 減少 TIME_WAIT 佔用。.NET Socket 連線上限遠高於 65535,真正瓶頸在於作業系統核心資源與應用層架構設計。合理調整系統參數、採用非同步多工模式,可輕松支撐百萬級並發連線。