java.net.SocketException: No buffer space available (maximum connections reached?): connect
问题描述:
压测时,使用400个线程,如果只是简单压测一下没问题,如果持续个几分钟,就会抛出如上异常
解决方案:
在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
再次进行压测,问题解决!
参考资料:
https://blog.csdn.net/fox_hacker/article/details/41283973
https://www.cnblogs.com/guxiaobei/p/8075242.html