Windows 下單機最大TCP連接數

在做Socket 編程時,我們經常會要問,單機最多可以建立多少個 TCP 連接,本文將介紹如何調整系統參數來調整單機的最大TCP連接數。

Windows 下單機的TCP連接數有多個參數共同決定,下面一一介紹:

最大TCP連接數

[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)

 轉載於http://www.cnblogs.com/eaglet/archive/2010/09/21/1832233.html

最大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.

 

IBM WebSphere Voice Server 在windows server 2003 下的典型配置

這是IBM WebSphere Voice Server 的典型配置,大家可以做個參考。原文參見

IBM Web Sphere Voice Server 配置

 

  • MaxUserPort = 65534 (Decimal)
  • MaxHashTableSize = 65536 (Decimal)
  • MaxFreeTcbs = 16000 (Decimal)

這裏我們可以看到 MaxHashTableSize 被配置爲比MaxFreeTcbs 大4倍,這樣可以大大增加TCP建立的速度。


轉載於http://www.cnblogs.com/eaglet/archive/2010/09/21/1832233.html

發佈了8 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章