RabbitMQ延迟交换插件加载和资源

时间:2017-01-10 09:34:50

标签: rabbitmq rabbitmq-exchange

我们正在使用rabbitmq(3.6.6)将分析(数百万)发送到不同的分析仪。这些非常快,我们计划使用rabbit-message-plugin来安排对分析元素的监控。

我们考虑过rabbitmq-delayed-exchange-plugin,已经做了一些测试,我们需要一些澄清。

目前:

  • 我们正在安排数百万条消息
  • 延迟时间从几分钟到24小时
  • 如前所述,这些都是测试,因此我们使用的是一台具有一个核心和4G内存的计算机,其上还运行着其他应用程序。

在2.0G设置高内存水印时发生了什么:

  • RabbitMQ最终(大约一天)开始消耗100%(只有一个核心)并且不响应管理界面,也不响应rabbitmqctl。这持续了至少18个小时(总是最终杀死,删除磁盘上的mnesia延迟文件 - 大约100/200 MB - 并重新启动)。

在3.6G设置高内存水印时发生了什么:

  • RabbitMQ被内核杀死,因为在这样工作一周后内存使用率很高(4 GB硬件)。
  • 用于延迟交换的Mnesia文件大约是1.5G
  • RabbitMQ无法再启动以下跟踪(我们假设由于延迟中的KILL消息以某种方式终止已损坏某事

    {could_not_start,rabbit,
    rabbitmq-server[12889]: {{case_clause,{timeout,['rabbit_delayed_messagerabbit@rabbitNode']}},
    rabbitmq-server[12889]: [{rabbit_boot_steps,'-run_step/2-lc$^1/1-1-',1,
    

现在我们正在问自己:对于这些信息量,我们是否有点使用兔子延迟交换插件?如果我们是,那么问题的结束,重新思考并重新启动,但如果没有,那么可能是适当的硬件和/或配置设置?

1 个答案:

答案 0 :(得分:0)

RabbitMQ延迟交换插件未正确设计用于存储数百万条消息。

plugin page

也有记录
  

此插件的当前设计并不适合具有较高的场景   延迟消息的数量(例如,数千或数百万)。看到   72详情。

另请阅读:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/issues/72

  

这个插件经常被用作RabbitMQ是一个数据库。它不是。