windows - java.net.SocketException : No buffer space available (maximum connections reached? ): JVM_Bind

标签 windows tomcat jvm socketexception connection-leaks

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

环境:

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

目前收集到的证据:

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

开放式问题:

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

我没有想法,感谢任何提示!

最佳答案

我们收到此错误的原因是 Windows Server 2008 R2/Windows 7 中的一个错误。由于多核机器上的竞争条件,内核会泄漏环回套接字,此补丁修复了该问题: http://support.microsoft.com/kb/2577795

关于windows - java.net.SocketException : No buffer space available (maximum connections reached? ): JVM_Bind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10088363/

相关文章:

c - 如何防止磁盘分区显示在 Windows 资源管理器中?

.net - 编写 .NET 以外的 Windows 客户端应用程序的最佳方法是什么?

java - 在 REST 帖子上发回文件列表

java - 停止 JVM 中的敌对线程

java - 在 Java 8 中,它显示为默认情况下没有选择可用的 4 个收集器 (GC)

windows - Windows 的通用脚本语言

c# - 加密异常 : Access denied - How to give access on User store?

java - Tomcat 已启动但未创建数据库表且本地主机为 :8080 shows "HTTP Status 404"

tomcat - 部署在不同集群服务器上的相同应用程序的相同磁盘存储

java - 将 jvm 与应用程序 bundle 在一起