在用jmeter做壓測時挺举,會遇到線程數(shù)超過5000時報錯歉闰,這個錯并不是程序的錯犀被,而是請求被我們本地的服務(wù)器給拒絕了。這時候就需要我們修改本地服務(wù)器的注冊表了寡壮。
1,win+r讹弯,打開運行框况既,輸入 regedit 進入注冊表頁面
2,進入到以下路徑:[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
3闸婴,以下四個參數(shù)如果有直接修改數(shù)據(jù)坏挠,如果沒有可以新建。
- 最大允許的TCP連接數(shù):TcpNumConnections = 16777214
- 最大動態(tài)端口數(shù) :MaxUserPort = 65534
- 最大TCB 數(shù)量 :MaxFreeTcbs = 16000
- 最大TCB Hash table 數(shù)量 :MaxHashTableSize = 65536
注:我這里新建的是“二進制值(B)”類型的邪乍,上面的值是10進制數(shù)據(jù)降狠,應(yīng)該轉(zhuǎn)換為二進制數(shù)據(jù)再輸入
(這里只能輸入偶數(shù)位數(shù),由于65536轉(zhuǎn)換為二進制后是奇數(shù)位數(shù)庇楞,所以這里65536的值用65535的值替換的)
4榜配,釋義
- 最大動態(tài)端口數(shù)
TCP客戶端和服務(wù)器連接時,客戶端必須分配一個動態(tài)端口吕晌,默認情況下這個動態(tài)端口的分配范圍為 1024-5000 蛋褥,也就是說默認情況下,客戶端最多可以同時發(fā)起3977 個Socket 連接睛驳。我們可以修改如下注冊表來調(diào)整這個動態(tài)端口的范圍 - 最大TCB 數(shù)量
系統(tǒng)為每個TCP 連接分配一個TCP 控制塊(TCP control block or TCB)烙心,這個控制塊用于緩存TCP連接的一些參數(shù),每個TCB需要分配 0.5 KB的pagepool 和 0.5KB 的Non-pagepool乏沸,也就說淫茵,每個TCP連接會占用 1KB 的系統(tǒng)內(nèi)存。 - MaxHashTableSize = 512 (Default = 512, Range = 64-65536)
TCB 是通過Hash table 來管理的
這個值指明分配 pagepool 內(nèi)存的數(shù)量蹬跃,也就是說匙瘪,如果MaxFreeTcbs = 1000 , 則 pagepool 的內(nèi)存數(shù)量為 500KB
那么 MaxHashTableSize 應(yīng)大于 500 才行。這個數(shù)量越大蝶缀,則Hash table 的冗余度就越高丹喻,每次分配和查找 TCP 連接用時就越少。這個值必須是2的冪翁都,且最大為65536.