问题描述:
压测时,使用500个线程,如果只是简单压测一下没问题,如果持续个几分钟,就会抛出如上异常
解决方案:
在win7客户端上做测试,结果发现tcp连接数达到16360多点就连不上去了,后来通过DOS下的netstat -a -n 命令,看到客户端使用的端口号是从49152-65535这一段,而49152之前的都没有使用(在windows8)。
在Windows vista和windows server 2008以前的系统中动态的客户端端口范围是1025到5000;在Windows vista和windows server 2008中,为了遵守IANA的推荐,把范围扩展成49152到65535。
如此看来,应该是由于系统分配的端口不够用导致的报错,修改端口配置如下:
netsh int ipv4 set dynamicport tcp start=1025 num=64510
再次进行压测,问题解决!
Windows Server 2008 R2 或 Windows 7 的多处理器计算机上的内核套接字泄漏,也可安装补丁:KB2577795(Windows6.1-KB2577795-x64.msu)
补丁链接:http://thehotfixshare.net/board/index.php?autocom=downloads&showfile=13913