问题描述:
使用http协议,200VU并发访问:URL=http://124.74.192.111/xx.web.taobao/pages/left.jsp,测试中正常,但URL增加了端口号8080即:URL=http://124.74.192.111:8080/xx.web.taobao/pages/left.jsp,并设置了持续时间,开始运行controller即开始报大量的错:“Action.c(5): Error -27796: Failed to connect to server "124.74.192.111:8080": [10048] Address already in use
Try changing the registry value
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/tcpip/Parameters/TcpTimedWaitDelay to 30 and HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/tcpip/Parameters/MaxUserPort to 65534 and rebooting the machine”。
问题解决:
根据错误提示,修改测试机设置:HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/tcpip/Parameters/TcpTimedWaitDelay其值改小,比如5. 重启测试机,再加压测试即可。
根据提示还要调整“MaxUserPort ”的键值,因为这里的测试机该值已为最大,故不需要调整这个值 。
分析:
借用zee的分析思路:因为负载生成器的性能太好,发数据包特别快,服务器也响应特别快,从而导致负载生成器的机器的端口在没有timeout之前就全部占满了。在全部占满后,就会出现上面的错误。执行netstat –na命令,可以看到打开了很多端口。所以就调整TCP的time out。即在最后一个端口还没有用到时,前面已经有端口在释放了。