代理网络充斥着未使用的 ActiveMQ.Advisory.TempQueue 消息

2024-01-06

我目前正在调查我的经纪商网络中的内存问题。 根据 JConsole 的说法,当代理开始阻止消息时,ActiveMQ.Advisory.TempQueue 占用了 99% 的配置内存。

有关配置的一些细节

大部分情况下都是默认配置。一个开放的 stomp+nio 连接器,一个开放的 openwire 连接器。所有经纪人形成一个超立方体(与每个其他经纪人的一个途中连接(更容易自动生成))。没有流量控制。

问题详情

Web 控制台在 30 个消费者(6 个代理、1 个消费者,其余是使用 java 连接器的客户端)处显示类似 1974234 条入队消息和 45345 条出队消息。据我所知,出队计数应该不小于:enqueued*consumers。因此,就我而言,大量建议不会被消耗,并开始填充我的临时消息空间。 (目前我配置了几个GB作为临时空间)

由于没有客户端主动使用临时队列,我觉得这很奇怪。看了临时队列后,我更加困惑了。大多数消息看起来像这样(msg.toString):

ActiveMQMessage {commandId = 0, responseRequired = false, messageId = ID:srv007210-36808-1318839718378-1:1:0:0:203650, originalDestination = null, originalTransactionId = null, producerId = ID:srv007210-36808-1318839718378-1:1:0:0, destination = topic://ActiveMQ.Advisory.TempQueue, transactionId = null, expiration = 0, timestamp = 0, arrival = 0, brokerInTime = 1318840153501, brokerOutTime = 1318840153501, correlationId = null, replyTo = null, persistent = false, type = Advisory, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = null, marshalledProperties = org.apache.activemq.util.ByteSequence@45290155, dataStructure = DestinationInfo {commandId = 0, responseRequired = false, connectionId = ID:srv007210-36808-1318839718378-2:2, destination = temp-queue://ID:srv007211-47019-1318835590753-11:9:1, operationType = 1, timeout = 0, brokerPath = null}, redeliveryCounter = 0, size = 0, properties = {originBrokerName=broker.coremq-behaviortracking-675-mq-01-master, originBrokerId=ID:srv007210-36808-1318839718378-0:1, originBrokerURL=stomp://srv007210:61612}, readOnlyProperties = true, readOnlyBody = true, droppable = false}

看到这些消息后我有几个问题:

  1. 我是否正确理解消息的来源是 stomp 连接?
  2. 如果是,stomp 连接如何创建临时队列?
  3. 这些建议未被采纳是否有一个简单的原因?

目前,我通过停用网络连接器上的bridgeTempDestinations 属性来推迟问题的解决。这样消息就不会传播,并且它们填充临时空间的速度会慢得多。如果我无法修复这些消息的来源,我至少想阻止它们填充商店:

  1. 我可以在一段时间后删除这些未使用的消息吗?
  2. 这会产生什么后果?

更新:我对集群进行了更多监控,发现消息已被消耗。它们已排队并分派,但消费者(与使用 activemq 库的 java 消费者一样多的其他集群节点)无法确认消息。因此它们保留在已调度的消息队列中,并且该队列不断增长。


这是一个旧线程,但如果有人遇到同样的问题,您可能需要查看这篇文章:http://forum.spring.io/forum/spring-projects/integration/111989-jms-outbound-gateway-temporary-queues-never-deleted http://forum.spring.io/forum/spring-projects/integration/111989-jms-outbound-gateway-temporary-queues-never-deleted

该链接中的问题听起来很相似,即临时队列产生大量建议消息。在我的例子中,我们使用临时队列来实现同步请求/响应消息传递,但建议消息量导致 ActiveMQ 将大部分时间花在 GC 上,并最终引发 GC 开销超出限制异常。这是 v5.11.1 上的。即使我们关闭了连接、会话、生产者、消费者,临时队列也不会被 GC 处理,并且会继续接收咨询消息。

解决方案是在清理其他资源时显式删除临时队列(请参阅https://docs.oracle.com/javaee/7/api/javax/jms/TemporaryQueue.html https://docs.oracle.com/javaee/7/api/javax/jms/TemporaryQueue.html)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代理网络充斥着未使用的 ActiveMQ.Advisory.TempQueue 消息 的相关文章

随机推荐

  • 如何重新映射 python 字典键

    我正在开发一个程序 该程序 除其他外 读取 CSV 文件 它以以下形式存储为字典数组 col1 data1a col2 data2a col1 data1b col2 data2b 对于每一行 作为其他处理的一部分 我需要将这些键重新映射到
  • 更改 UITableView 的节页眉/页脚标题而不重新加载整个表视图

    有没有办法在不调用的情况下重新加载表视图的节页眉 页脚 tableView reloadData 事实上 我想在表视图的部分页脚中显示表格视图部分中的单元格数量 表视图是可编辑的 我使用删除或插入行 insertRowsAtIndexPat
  • Android:将 PNG ByteArray 写入文件

    我已将图像文件读入 ByteArray 但如何将其写回 我的意思是将 ByteArray 保存到文件系统中的图像文件 首选 PNG 格式 我的代码从 PNG 文件到 ByteArray ByteArrayOutputStream strea
  • 使用 Quartz 跨多个无状态应用程序服务器调度单个作业

    我在负载均衡器后面有一层相同的应用程序服务器 出于操作原因 我有一个限制 即两个应用程序服务器上的应用程序配置必须相同 以便可以轻松添加和删除节点 所有应用程序服务器共享相同的数据库 应用程序服务器不会 不会集群 到目前为止 这一切都运行良
  • 在片段中初始化字体

    我有这一行 Typeface font Typeface createFromAsset getAssets fonts Delius Regular ttf but the getAssets 参数似乎带来了一些错误 它带有可怕的红线下划
  • 为什么我们要在 YARN 中配置 mapred.job.tracker?

    据我所知 YARN 被引入并取代了 JobTracker 和 TaskTracker 我看过一些Hadoop 2 6 0 2 7 0安装教程 他们正在配置mapreduce framework name作为纱线和mapred job tra
  • 在运行时调整 char[] 的大小

    我需要调整大小char array size to char array new size 在运行时 我怎样才能做到这一点 如果您正在使用std vector
  • ASP.NET MVC 3:具有继承/多态性的 DefaultModelBinder

    首先 对这篇大文章 我尝试先做一些研究 以及针对同一问题的技术组合 ASP NET MVC 3 Ninject 和 MvcContrib 表示歉意 我正在使用 ASP NET MVC 3 开发一个项目来处理一些客户订单 简而言之 我有一些继
  • 有没有办法生成 DOCX 文件的缩略图?

    我已经使用像 ASPOSE 这样的 付费 工具完成了这项工作 但我很好奇是否有任何开源工具可以做到这一点 我确信可能有工具可以做到这一点 但如果您可以将文件转换为可以轻松光栅化的格式 那么可能值得探索 例如 将工作文档转换为 pdf 然后对
  • 对从 JSON 创建的数据框应用过滤条件

    我正在处理由 JSON 创建的数据帧 然后我想在数据帧上应用过滤条件 val jsonStr metadata key 84896 value 54 key 1234 value 12 val rdd sc parallelize Seq
  • 命名空间不能直接包含成员... + 类型或命名空间定义,或文件结尾预期错误

    我正在尝试编译适用于 Windows Phone 的 Sync Framework 4 0 的示例代码 但是我在几个文件中遇到了错误 这些文件之一是 if SERVER namespace Microsoft Synchronization
  • 我如何从密钥库中获取秘密?

    我想从 Azure 密钥保管库获取机密 我找到了下面的代码并尝试了它 但我因错误而失败 private String clientId i private String secret i KeyVaultClient client new
  • 我什么时候应该使用 out 参数?

    我不明白何时应该使用输出参数 如果我需要返回多个类型 我个人会将结果包装在新类型中 我发现使用它比使用 out 更容易 我见过这样的方法 public void Do int arg1 int arg2 out int result 在某些
  • 使用 php 发送带有附件的电子邮件

    我使用此代码使用 php 发送带有附件的电子邮件 但附件中存在一些错误 因为我收到了一封电子邮件并且附件出现在内容中 在我使用相同的代码并成功运行之前 为什么
  • 理解 Rust 中的线程安全 RwLock> 机制

    背景 I am 全新的Rust 昨天开始 我试图确保我理解正确 我正在寻找为 游戏 编写一个配置系统 并希望它能够快速访问但偶尔可变 首先 我想研究本地化 这似乎是静态配置的合理用例 因为我意识到这些东西通常不会 生锈 我想出了以下 工作
  • django ModelMultipleChoiceField 设置初始值

    我有以下代码 category forms ModelMultipleChoiceField label Category queryset Category objects order by name widget forms Selec
  • 有没有地方可以在一处获取 laravel `vendor` 文件夹?

    我意识到这就是作曲家的用途 但我不是特别喜欢它 这是有道理的 但让我恼火的是 laravel5 的 github 不能开箱即用 因为它是vendor目录有点大 不一定是 laravel5 尽管 laravel 确实需要它 我也很困惑为什么作
  • 如何在 Intellij IDEA 运行之前启用 Hibernate 字节码检测?

    在 gradle 中你可以使用以下方法来实现 apply plugin enhance buildscript repositories mavenCentral dependencies classpath org hibernate h
  • 删除动态数组的一部分并增加其他部分

    我需要一个动态数组 因此我需要通过指针分配必要的内存量 让我想知道哪个是一个好的解决方案 是 C 能够执行以下操作 int p new int 6 它分配必要的数组 我需要的是 之后我想增加这个数组的一些部分 一个 有缺陷的 例子 int
  • 代理网络充斥着未使用的 ActiveMQ.Advisory.TempQueue 消息

    我目前正在调查我的经纪商网络中的内存问题 根据 JConsole 的说法 当代理开始阻止消息时 ActiveMQ Advisory TempQueue 占用了 99 的配置内存 有关配置的一些细节 大部分情况下都是默认配置 一个开放的 st