java.net.SocketException:没有可用的缓冲区空间(达到最大连接数?):JVM_Bind
Tomcat正在Windows下运行一个web应用程序。 在几天之后(在非常低的负载下),标题中提到的exception开始出现在日志中,从那时起不能build立新的连接,唯一的修复就是重启服务器。
环境:
- 最新的Tomcat 6
- Windows Server 2008 R2
- JDK 6更新30
- SQL Server 2008
- Kerberos身份validation
迄今收集的证据:
- netstat显示没有过多的连接
- ProcessExplorer不显示过多的打开文件句柄
- 系统主内存使用率是平均的
- JVM堆的使用率是平均的
- 重新启动Tomcat并不能解决问题
打开问题:
- 如果我们连接泄漏,不应该显示在netstat?
- 不应该重新启动应用服务器解决问题,因为操作系统应该释放所有的进程资源?
- 有没有办法将问题追溯到原点? 如安装监控软件,可能类似于lsof等?
我出来的想法,任何提示赞赏!
我们得到这个错误的原因是Windows Server 2008 R2 / Windows 7中的一个错误。由于具有多个核心的计算机上的竞争条件,内核泄漏了回送套接字,此修补程序修复了以下问题: http : //support.microsoft.com/zh-cn/ COM / KB / 2577795
我在Windows 7 64位上运行的Alfresco社区4.0d,并具有相同的症状和错误。
这个问题已经被微软的修补程序解决了:“ 运行Windows Server 2008 R2或Windows 7的多处理器计算机上的内核套接字泄露 ”( http://support.microsoft.com/kb/2577795 )(即Buddy Casino的回答(请参阅下面))。
我想补充的另一个观察是,在Alfresco服务closures后大约5-10分钟,Windows连接(Internet Explorer,远程桌面等)将再次工作。
露天是一个很好的产品,我怕我不得不废弃它。 幸运的是,stackoverflow来救援!
再次感谢Buddy Casino的回答。
嘘给那个推倒问题的人。
我们在类似的设置上看到相同的东西,W2008R2,Tomcat 6.0.29,Java 1.6.0.25。 重新启动tomcat并没有什么帮助,但是重启服务器本身至less有一段时间。 在最后一次开始closures各个服务之后,我们相信我们已经缩小到了服务器上运行的Alfresco实例或Backup Exec Agent服务。 在这些服务(总共4个)停止后,Tomcat中的应用程序又开始工作,虽然我们仍然在stdout日志中看到caching/连接错误,这很奇怪。 在确定哪些是罪魁祸首之前,需要等待问题返回,这可能是几天到一周或更长的时间。
你有没有机会在你的服务器上运行Alfresco或BE?