大規模Windows環境下,採用Nginx反向代理服務後,操作系統會產生較多TIME_WAIT的TCP(Transmission Control Protocol)連接,操作系統默認TIME_WAIT的TCP連接回收時間是4分鐘,TCP默認動態端口範圍爲開始端口49152,結束端口65535。這樣會使回收TCP過慢導致系統吞吐量下降,甚至出現502訪問失敗問題。如何修改操作系統內核參數來縮短TIME_WAIT狀態TCP連接回收時間和添加TCP動態端口範圍,保證在大併發場景下操作系統的端口資源可用?
修改TCP回收時間。
- 在Windows開始菜單中,單擊“運行”。
- 在“運行”對話框中,輸入“regedit”後按“Enter”打開註冊表編輯器。
- 在“註冊表編輯器”中打開“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”路徑。
- 在“編輯”菜單中,選擇“新建 > DWORD (32-位)值”,輸入名稱“TcpTimedWaitDelay”。
- 右鍵單擊TcpTimedWaitDelay,選擇“修改”。
- 在“編輯 DWORD(32位)值”對話框的“基數”區域中,選擇十進制值爲“30”,並“確定”。
- 關閉註冊表編輯器。
修改端口範圍。
- 在Windows開始菜單中,單擊“運行”。
- 輸入“cmd”並按“Enter”打開命令執行窗口。
- 執行如下命令修改端口範圍。
netsh int ipv4 set dynamicportrange tcp startport=5000 numberofports=60000