RabbitMQ内存占用高

问题描述 投票:0回答:1

我目前在生产环境中使用 RabbitMQ (3.10.25),具有 3 个节点并包含多个队列:

  • 一个经典队列
  • 一个仲裁队列(用于处理 nservicebus 命令 - NServiceBus.RabbitMQ 包 8.0.2)
  • 一个仲裁队列“错误”
  • 28 个 nservicebus 仲裁队列 (nsb.v2.delay-level-xx)

经典队列每秒处理 2 条消息。 仲裁队列不执行任何操作。

几个小时后,一个节点仍然稳定(由经典队列使用),其他 2 个节点的内存使用率很高。已达到水印内存限制。另外,还有大量的预先分配的未使用内存(看起来不正常并且还在增加)。其他表也是1.2GB..(不断增加)

解决这个问题的最佳方法是什么? RabbitMq 或 NserviceBus 是否提供特定设置?减少内存使用?

RabbitMQ 上可以找到一些信息,但尚不清楚需要调整哪些设置作为起点。

更新 1:写入/同步 IO 也很高。 (以上截图是在一些生产者/消费者连接时创建的。即使没有生产者/消费者,内存消耗仍在继续上升。IO截图是0个生产者/消费者的情况)

更新2: 我注意到,其中一个队列 nsb.v2.verify-stream-flag-enabled 显示“集群占少数”。你能解释一下这是什么意思吗?它是否导致了所描述的内存问题?

c# .net rabbitmq queue nservicebus
1个回答
0
投票

流标志队列由 NServiceBus 在启动时创建,用于检查代理是否支持流队列,流队列由仲裁队列间接使用,以使超时基础设施可靠。

队列本身不用于任何消息传递,因此不会导致任何内存问题。

验证 Rabbitmq 日志是否存在任何问题,并按照 Adam 的建议运行

rabbitmqctl report
。另请参阅:

© www.soinside.com 2019 - 2024. All rights reserved.