在做Socket 編程時(shí),我們經(jīng)常會(huì)要問(wèn),單機(jī)最多可以建立多少個(gè) TCP 連接,本文將介紹如何調(diào)整系統(tǒng)參數(shù)來(lái)調(diào)整單機(jī)的最大TCP連接數(shù)。 Windows 下單機(jī)的TCP連接數(shù)有多個(gè)參數(shù)共同決定,下面一一介紹: 最大TCP連接數(shù)[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
以上注冊(cè)表信息配置單機(jī)的最大允許的TCP連接數(shù),默認(rèn)為 16M。這個(gè)數(shù)值看似很大,這個(gè)并不是限制最大連接數(shù)的唯一條件,還有其他條件會(huì)限制到TCP 連接的最大連接數(shù)。 最大動(dòng)態(tài)端口數(shù)TCP客戶(hù)端和服務(wù)器連接時(shí),客戶(hù)端必須分配一個(gè)動(dòng)態(tài)端口,默認(rèn)情況下這個(gè)動(dòng)態(tài)端口的分配范圍為 1024-5000 ,也就是說(shuō)默認(rèn)情況下,客戶(hù)端最多可以同時(shí)發(fā)起3977 個(gè)Socket 連接。我們可以修改如下注冊(cè)表來(lái)調(diào)整這個(gè)動(dòng)態(tài)端口的范圍 [HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
最大TCB 數(shù)量系統(tǒng)為每個(gè)TCP 連接分配一個(gè)TCP 控制塊(TCP control block or TCB),這個(gè)控制塊用于緩存TCP連接的一些參數(shù),每個(gè)TCB需要分配 0.5 KB的pagepool 和 0.5KB 的Non-pagepool,也就說(shuō),每個(gè)TCP連接會(huì)占用 1KB 的系統(tǒng)內(nèi)存。 系統(tǒng)的最大TCB數(shù)量由如下注冊(cè)表設(shè)置決定 [HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters] 非Server版本,MaxFreeTcbs 的默認(rèn)值為1000 (64M 以上物理內(nèi)存) Server 版本,這個(gè)的默認(rèn)值為 2000。 也就是說(shuō),默認(rèn)情況下,Server 版本最多同時(shí)可以建立并保持2000個(gè)TCP 連接。 最大TCB Hash table 數(shù)量TCB 是通過(guò)Hash table 來(lái)管理的,下面注冊(cè)表設(shè)置決定了這個(gè)Hash table 的大小 HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters] 這個(gè)值指明分配 pagepool 內(nèi)存的數(shù)量,也就是說(shuō),如果MaxFreeTcbs = 1000 , 則 pagepool 的內(nèi)存數(shù)量為 500KB 那么 MaxHashTableSize 應(yīng)大于 500 才行。這個(gè)數(shù)量越大,則Hash table 的冗余度就越高,每次分配和查找 TCP 連接用時(shí)就越少。這個(gè)值必須是2的冪,且最大為65536.
IBM WebSphere Voice Server 在windows server 2003 下的典型配置這是IBM WebSphere Voice Server 的典型配置,大家可以做個(gè)參考。原文參見(jiàn) IBM Web Sphere Voice Server 配置
這里我們可以看到 MaxHashTableSize 被配置為比MaxFreeTcbs 大4倍,這樣可以大大增加TCP建立的速度。
|
|
來(lái)自: quasiceo > 《計(jì)算機(jī)》