EAS Cloud应用集群启不来报java.net.SocketException: No buffer space available (maximum connections reached?) 错误处理

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

EAS Cloud应用集群启不来报java.net.SocketException: No buffer space available (maximum connections reached?)  错误处理

问题描述:

EAS Cloud应用集群(实例)启不来,从应用环境的admin.log中发现如下报错:

日志中有这样的异常,Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): connect

at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)



解决方案:

主要还是客户那边的网络在超时或等待时间设置上不是很优,访问的端口号个数不够多等原因导致EAS实例启动异常,数据库连接端口时通时不通,License等一系列的奇怪异常,通过找到关键的报错后,通过TCPOptimizer工具修正后,集群启动正常。

对问题经分剖析:

可能是外网那个IP上的客户端在不断的寻求连接吧!SOCKET.close()是不马上释放连接的,而是设置为TIME_WAIT状态,这个时间默认是240S,也就是4分钟。这太长了,有30秒(最小值)就可以了。在修改这个默认值的时候,还发现这台机器并没有开启大端口服务,也就是高于5000的端口。这也是会出现“系统缺乏足够缓冲区空间或者因为队列已满无法执行套接字上操作”错误的!而那WEB服务就是配置到1万以上端口的!操作方法如下:

1. 启动注册表编辑器。 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters

2. 新建

值名称:MaxUserPort

值类型: DWORD

值数据: 65534(用十进制的方法写进去就可以,如果是十六进制,是FFFE,因为4个F是65535嘛)

有效范围: 5000 - 65534 (十进制)

默认: 0x1388 5000 (十进制)

新建

值名称:TCPTimedWaitDelay

值类型: DWORD

值数据: 0000001e(也就是30,不行可以用WINDOWS计算器,很方便,这个表示TIME_WAIT的秒数)

参考链接: https://blog.csdn.net/wenda84/article/details/5495597

 

或用以下给的TCP工具进行优化

下载这个工具,在应用服务器上执行,优化一下tcp参数:
https://www.speedguide.net/downloads.php



经过以上TCP相关的优化后,集群启动正常。


EAS Cloud应用集群启不来报java.net.SocketException: No buffer space available (maximum connections reached?) 错误处理

问题描述:EAS Cloud应用集群(实例)启不来,从应用环境的admin.log中发现如下报错:日志中有这样的异常,Caused by: java.net.SocketE...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息