如何修改windows伺服器最大的tcp連線數
阿新 • • 發佈:2019-02-12
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
TcpNumConnections = 0x00fffffe (Default = 16,777,214)
以上登錄檔資訊配置單機的最大允許的TCP連線數,預設為 16M。這個數值看似很大,這個並不是限制最大連線數的唯一條件,還有其他條件會限制到TCP 連線的最大連線數。
最大動態埠數
TCP客戶端和伺服器連線時,客戶端必須分配一個動態埠,預設情況下這個動態埠的分配範圍為 1024-5000 ,也就是說預設情況下,客戶端最多可以同時發起3977 個Socket 連線。我們可以修改如下注冊表來調整這個動態埠的範圍
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534)
最大TCB 數量
系統為每個TCP 連線分配一個TCP 控制塊(TCP control block or TCB),這個控制塊用於快取TCP連線的一些引數,每個TCB需要分配 0.5 KB的pagepool 和 0.5KB 的Non-pagepool,也就說,每個TCP連線會佔用 1KB 的系統記憶體。
系統的最大TCB數量由如下注冊表設定決定
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxFreeTcbs = 2000 (Default = RAM dependent, but usual Pro = 1000, Srv=2000)
非Server版本,MaxFreeTcbs 的預設值為1000 (64M 以上實體記憶體)
Server 版本,這個的預設值為 2000。
也就是說,預設情況下,Server 版本最多同時可以建立並保持2000個TCP 連線。
最大TCB Hash table 數量
TCB 是通過Hash table 來管理的,下面登錄檔設定決定了這個Hash table 的大小
HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters]
MaxHashTableSize = 512 (Default = 512, Range = 64-65536)
這個值指明分配 pagepool 記憶體的數量,也就是說,如果MaxFreeTcbs = 1000 , 則 pagepool 的記憶體數量為 500KB
那麼 MaxHashTableSize 應大於 500 才行。這個數量越大,則Hash table 的冗餘度就越高,每次分配和查詢 TCP 連線用時就越少。這個值必須是2的冪,且最大為65536.
MaxUserPort = 65534 (Decimal)
MaxHashTableSize = 65536 (Decimal)
MaxFreeTcbs = 16000 (Decimal)
這裡我們可以看到 MaxHashTableSize 被配置為比MaxFreeTcbs 大4倍,這樣可以大大增加TCP建立的速度。
TcpNumConnections = 0x00fffffe (Default = 16,777,214)
以上登錄檔資訊配置單機的最大允許的TCP連線數,預設為 16M。這個數值看似很大,這個並不是限制最大連線數的唯一條件,還有其他條件會限制到TCP 連線的最大連線數。
最大動態埠數
TCP客戶端和伺服器連線時,客戶端必須分配一個動態埠,預設情況下這個動態埠的分配範圍為 1024-5000 ,也就是說預設情況下,客戶端最多可以同時發起3977 個Socket 連線。我們可以修改如下注冊表來調整這個動態埠的範圍
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534)
最大TCB 數量
系統為每個TCP 連線分配一個TCP 控制塊(TCP control block or TCB),這個控制塊用於快取TCP連線的一些引數,每個TCB需要分配 0.5 KB的pagepool 和 0.5KB 的Non-pagepool,也就說,每個TCP連線會佔用 1KB 的系統記憶體。
系統的最大TCB數量由如下注冊表設定決定
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxFreeTcbs = 2000 (Default = RAM dependent, but usual Pro = 1000, Srv=2000)
非Server版本,MaxFreeTcbs 的預設值為1000 (64M 以上實體記憶體)
Server 版本,這個的預設值為 2000。
也就是說,預設情況下,Server 版本最多同時可以建立並保持2000個TCP 連線。
最大TCB Hash table 數量
TCB 是通過Hash table 來管理的,下面登錄檔設定決定了這個Hash table 的大小
HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters]
MaxHashTableSize = 512 (Default = 512, Range = 64-65536)
這個值指明分配 pagepool 記憶體的數量,也就是說,如果MaxFreeTcbs = 1000 , 則 pagepool 的記憶體數量為 500KB
那麼 MaxHashTableSize 應大於 500 才行。這個數量越大,則Hash table 的冗餘度就越高,每次分配和查詢 TCP 連線用時就越少。這個值必須是2的冪,且最大為65536.
MaxUserPort = 65534 (Decimal)
MaxHashTableSize = 65536 (Decimal)
MaxFreeTcbs = 16000 (Decimal)
這裡我們可以看到 MaxHashTableSize 被配置為比MaxFreeTcbs 大4倍,這樣可以大大增加TCP建立的速度。