一尘不染

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

tomcat

Tomcat正在Windows下运行Webapp。几天后(在非常低的负载下),标题中提到的异常开始出现在日志中,此后无法建立任何新的连接,唯一的解决方法是重新启动服务器。

环境:

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

到目前为止收集的证据:

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

公开问题:

  • 如果我们泄漏连接,它们是否不应该出现在netstat中?
  • 重启OS应该不能解决问题,因为OS应该释放所有进程资源?
  • 有没有办法将问题追溯到根源?例如,安装监控软件,也许类似于lsof等?

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


阅读 347

收藏
2020-06-16

共1个答案

一尘不染

我们收到此错误的原因是Windows Server 2008 R2 / Windows
7中的错误。由于具有多个内核的计算机上的竞争状况,内核会泄漏回送套接字,此修补程序解决了此问题:http
//support.microsoft。 com / kb /
2577795
2020-06-16