最近在實作接口壓力測試的時候遇到這樣的一個問題
當線程數持續上升到一個點的時候,運作腳本的時候有很多報錯,如圖:
java.net.BindException: Address already in use: connect
開始以為是單機運作腳本運作不過來,是以另加了一台負載機同時運作腳本
但是依然還是會報錯,後面查閱了相關資料後發現,是因為windows本身提供的端口通路機制的問題。
Windows XP提供給 TCP/IP連結的端口為 1024-5000,并且要四分鐘來循環回收他們。就導緻我們在短時間内跑大量的請求時将端口占滿了。
解決方案為:
1.cmd中,用regedit指令打開系統資料庫
2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下,
1 .右擊parameters,添加一個新的DWORD,名字為MaxUserPort
2 .然後輕按兩下MaxUserPort,輸入數值資料為65534,基數選擇十進制(如果是分布式運作的話,控制機器和負載機器都需要這樣操作哦)
3.修改配置完畢之後記得重新開機機器才會生效