No buffer space available(Event 4227 & 4231 Errors)

问题现象:

文件下载失败:No buffer space available (maximum connections reached?): connect

Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): connect

分析过程:

  1. 解决端口数量

代码中用到端口的 FTP,SAP 的服务,想办法通过缓存和单例减少连接数,

网上出现相同现象,大多是系统版本,补丁问题,通过系统补丁,修改注册表等一通胡乱操作,发现没有作用。

https://confluence.atlassian.com/confkb/no-buffer-space-available-maximum-connections-reached-due-to-ephemeral-port-exhaustion-956142091.html

https://docs.microsoft.com/en-us/windows/client-management/troubleshoot-tcpip-port-exhaust

netsh int ipv4 show dynamicportrange tcp

有关从全局 TCP 端口空间分配一个短端口号的请求失败,因为所有此类端口都在使用中。

TCP/IP 无法建立传出连接,因为选定的本地终结点最近用于连接到相同的远程终结点。 当以高速率打开和关闭传出连接时,会导致所有可用的本地端口被使用,并迫使 TCP/IP 重新使用本地端口进行传出连接,此时通常会产生这种错误。为了最大限度地降低数 据受到损坏的风险,在给定的本地终结点和给定的远程终结点之间的连续连接中, TCP/IP 标准需要等待一段最短的时间段。

PS(Admin) > Get-NetTCPConnection | Group-Object -Property State, OwningProcess | Select -Property Count, Name, @{Name=“ProcessName”;Expression={(Get-Process -PID ($_.Name.Split(‘,’)[-1].Trim(’ ’))).Name}}, Group | Sort Count -Descending

cmd > netstat -aqo >D:/netstat.LOG

导出所有本地的端口连接,发现本地的 10524 进程与 5036 进程间存在大量连接。

5036 进程:kafka

10524 为 MES 服务进程