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?) 错误处理
本文2024-09-22 20:29:10发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-113935.html