分析
因為負載生成器的性能太好,發數據包特別快,服務器也響應特別快,從而導致負載生成器的機器的端口在沒有timeout之前就全部占滿了。在全部占滿后,就會出現上面的錯誤。執行netstat–na命令,可以看到打開了很多端口。所以就調整TCP的time out。即在最后一個端口還沒有用到時,前面已經有端口在釋放了。
成功的解決方法:
在負載生成器的注冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里,有如下兩個鍵值:
TcpTimedWaitDelay
MaxUserPort
1,這里的TcpTimedWaitDelay默認值應該中是30s,所以這里,把這個值調小為5s(按需要調整)。
2,也可以把MaxUserPort調大(如果這個值不是最大值的話)。
==========================================================================================
==========================================================================================
Action.c(28): Error -27796: Failed to connect to server "router.pay.360buy.com:80": [10060] Connection timed out
1. 修改壓力機注冊
嘗試修改注冊表中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters里,有如下兩個鍵值: TcpTimedWaitDelay --- 1 MaxUserPort ---- 65534 端口等待時間調小,最大可用端口調大
二. 在nginx 和 tomcat所在服務器上查看連接數是不是已滿, 輸入
netstat -an | grep TIME_WAIT -wc 發現大約有19000個
看來確實有很多time_wait的連接啊!
1. 檢查 /ext/sysctl.conf ,是不是有
net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1
這兩項配置,發現已經配置了
2. 修改loadrunner的配置
分別修改VUGEN和 control 二者的run time setting中的請求超時時間Preferences 中點擊Options 其中有三項的參數可以一次都修改了,
HTTP-request connect timeout 建議修改為1000
HTTP-request receieve timeout 建議修改為1000
Step download timeout 建議修改為10000
Http Keep Alive time out 建議修改800