load runner transaction 提示error:
Action.c(15): Error -27796: Failed to connect to server "ip": [10061] Connection refused
問題: 曾經遇到過一個問題,在一次效能測試過程中,使用http協議的多使用者向伺服器發送請求。設定了期間,出現錯誤為:
27796, Failed to connect to server 'hostname';port_ld': 'reason'.10048.
分析 因為負載產生器的效能太好,發資料包特別快,伺服器也響應特別快,從而導致負載產生器的機器的連接埠在沒有timeout之前就全部佔滿了。在全部佔滿後,就會出現上面的錯誤。執行netstat –na命令,可以看到開啟了很多連接埠。所以就調整TCP的time out。即在最後一個連接埠還沒有用到時,前面已經有連接埠在釋放了。
官方的troubleshooting:查看工具的troubleshooting,如下:
Message Code 27796 Failed to connect to server 'hostname';port_ld': 'reason'.Unable to connect to the specified server and port.Troubleshooting o Try to address the reason provided for the connection failure.o Try to access the application with a browser from the injector machine and from another machine (such as the recording machine).o Check that you accurately specified the correct host name and port.o Ping the host/port.o Check if the server application you are trying to access is running.o If you used a hostname, check if it was resolved to the correct address.o Check if the server application is listening to the right port. |
均不是解決之道。
成功的解決方案:
在負載產生器的註冊表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters裡,有如下兩個索引值:TcpTimedWaitDelayMaxUserPort1,這裡的TcpTimedWaitDelay預設值應該中是30s,所以這裡,把這個值調小為5s(按需要調整)。2,也可以把MaxUserPort調大(如果這個值不是最大值的話)。
註:修改完註冊表要重啟電腦
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 建議修改為1000HTTP-request receieve timeout 建議修改為1000Step download timeout 建議修改為10000Http Keep Alive time out 建議修改800