TCP 連線數
TcpTimedWaitDelay
TCP的 TIME_WAIT 狀態是指TCP/IP 必須經過多久,才能釋出已關閉的連線及重複使用它的資源。在 Windows 的環境下預設是4分鐘,Ubuntu 的預設是 60秒 (Linux 下則會依據不同 Distribution 版本而有不同的預設值,但都可以調整其時間長短 )。如果程式在短時內會建立大量的Http請求,不管事接收或發送,可以藉由縮減這個項目的值,TCP/IP 可以更快釋出已關閉的連線,提供更多資源給新的連線。
在 windows 下面的修改方式
- 啟動 regedit 指令,瀏覽至
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters
登錄次機碼,建立名稱為 TcpTimedWaitDelay 的新 REG_DWORD 值。 - 將值設為十進位 30,也就是十六進位的 0x0000001e。 這個值會將等待時間設為 30 秒。(不建議低於30秒)
- 關閉登錄編輯器。
- 停止並重新啟動系統。
Linux 下面的查詢 TIME_WAIT
的值
cat /proc/sys/net/ipv4/tcp_fin_timeout
MaxUserPort
Windows 預設的連外的連接埠是5000個, 也就是說 Web Server對外只能有5000個連線數,即使系統總共可使用的 Ports 有 65536 個,顯然預設值對高併發的網站來說是不夠用的,所以建議修改成 65536
查看目前的連線數
command line: netstat -n | find /C /I "established"
power shell: Get-Counter -Counter \TCPv4\*
查看 Linux 的預設值
command line: cat /proc/sys/net/ipv4/tcp_fin_timeout/ip_local_port_range
通常是 net.ipv4.ip_local_port_range = 32768 61000
,這代表能被使用的區間 32768 ~ 61000,可以把它改成 15000 ~ 61000
在 windows 下面的修改方式
- 啟動 regedit 指令,瀏覽至
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters
登錄次機碼,建立名稱為MaxUserPort
的新 REG_DWORD 值。 - 將值設為65536(10進制)
- 關閉登錄編輯器。
- 停止並重新啟動系統。