java.net.SocketException:没有可用的缓冲区空间(达到最大连接数?):JVM_Bind

Mic*_*ing 38 windows tomcat jvm connection-leaks socketexception

Tomcat在Windows下运行webapp.几天之后(在非常低的负载下),标题中提到的异常开始出现在日志中,从那一点开始就无法建立新的连接,唯一的解决方法就是重启服务器.

环境:

  • 最新的Tomcat 6
  • Windows Server 2008 R2
  • JDK 6更新30
  • SQL Server 2008
  • Kerberos身份验证

到目前为止收集的证据:

  • netstat显示没有过多的连接数
  • ProcessExplorer显示没有过多的打开文件句柄
  • 系统主内存使用率是平均值
  • JVM堆使用率是平均值
  • 重启Tomcat并没有解决问题

开放式问题:

  • 如果我们泄漏连接,它们不应该出现在netstat中吗?
  • 不应该重启appserver解决问题,因为操作系统应该释放所有进程资源?
  • 有没有办法将问题追溯到其起源?例如,安装监控软件,可能类似于lsof等?

我没有想法,任何提示赞赏!

Mic*_*ing 56

我们收到此错误的原因是Windows Server 2008 R2/Windows 7中的错误.由于具有多个核心的计算机上的竞争条件,内核泄漏了环回套接字,此修补程序修复了此问题:http: //support.microsoft. COM/KB/2577795

  • 我们正在使用Windows Server 2012,但仍面临此问题.还有其他一些解决办法吗?或者问题完全不同? (2认同)

mva*_*nle 11

我在Windows 7 64位上运行Alfresco Community 4.0d并且具有相同的症状和错误.

微软补丁解决了这个问题:" 运行Windows Server 2008 R2或Windows 7的多处理器计算机上的内核套接字泄漏 "(http://support.microsoft.com/kb/2577795)(即Buddy Casino的答案)(见下面)).

我想补充的另一个观察是,在Alfresco服务关闭后,Windows连接(Internet Explorer,远程桌面等)将在约5-10分钟后再次运行.

Alfresco是一款出色的产品,我担心我不得不废弃它.幸运的是stackoverflow来救援!

再次感谢Buddy Casino的回答.

嘘向投票问题的人嘘声.