38

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

环境:

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

目前收集的证据:

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

开放式问题:

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

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

4

3 回答 3

57

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

于 2012-04-18T10:49:36.357 回答
11

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

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

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

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

再次感谢 Buddy Casino 的回答。

向对问题投反对票的人嘘声。

于 2012-07-13T15:22:33.047 回答
1

我们在类似的设置 W2008R2、Tomcat 6.0.29、Java 1.6.0.25 上看到了同样的情况。重新启动 tomcat 没有帮助,但重新启动服务器本身可以,至少在一段时间内。在上次我们开始关闭个别服务之后,我们相信我们已将其范围缩小到也在服务器上运行的 Alfresco 实例或 Backup Exec 代理服务。在这些服务(总共四个)停止后,Tomcat 中的应用程序再次开始工作,尽管我们仍然在标准输出日志中看到缓冲区/连接错误,这很奇怪。需要等待问题再次出现,然后才能确认是罪魁祸首,这可能需要几天到一周或更长时间。

您是否有机会在您的服务器上运行 Alfresco 或 BE?

于 2012-04-12T20:21:20.253 回答