【问题标题】:Best way to find activemq connection leaks查找 activemq 连接泄漏的最佳方法
【发布时间】:2014-05-20 01:39:56
【问题描述】:

这很可耻,但我们知道有一些 activemq 连接泄漏。代码很旧,而且有很多曲折,很难找到泄漏的流。

我们从批处理机器中解雇了许多短期离职工作。我们知道并非所有路径都正确关闭了 activemq 连接。当连接未关闭但作业终止时,activemq 会保持该连接一段时间。最终,由于 activemq 最大连接数超出限制,一些关键应用程序会受到影响。

是否可以设置连接名称或其他识别信息,以便未正确关闭的连接将出现在 activemq 的日志文件中。这将告诉我们需要检查哪些日志文件。大量的工作使得很难找出导致问题的确切工作。但是,一旦我们了解了这项工作,我们就可以从日志中推断出足够的信息来查找和修复连接泄漏。

现在我们看到的只是连接发起的 IP 地址,并且由于所有作业都来自同一台机器,因此找出问题的根源并没有帮助

【问题讨论】:

    标签: java activemq


    【解决方案1】:

    如果您将jms.clientID=something 添加到您的连接 URL 并在您的 conf/log4j.properties 中打开调试日志记录,您将在 AMQ 的调试日志中获得客户端 ID。然后,您可以编写一些东西来分析您的日志并找到给定 clientID 的 AMQ ID 并以这种方式匹配日志。

    如果您的进程确实正在退出,那么您的连接应该会在那个时候消失(即,如果没有为它提供服务的进程,您就无法保持连接处于活动状态)。

    如果您在 Linux 上运行,您可以执行 netstat -anp | grep 61616(或任何你的 AMQ 端口)来查看哪些 PID 仍然与 AMQ 连接,然后另一个 ps 来查看这些进程是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多