【问题标题】:Rabbitmq high watermark set issueRabbitmq 高水印设置问题
【发布时间】:2015-01-13 12:59:04
【问题描述】:

这就是我在 rabbitmq 消息代理中得到的内容

=信息报告==== 2015 年 1 月 13 日::12:40:24 === vm_memory_high_watermark 集。使用的内存:478063864 允许:415868518

=警告报告==== 2015 年 1 月 13 日::12:40:24 === 在节点'rabbit@matchpointgps-141110'上设置了内存资源限制警报。


* 发布者将被阻止,直到此警报清除 *


这在我们的服务器上发生了两次。 我仍然无法为此找到正确的解决方案。

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    当队列长度变得非常高时,我们遇到了类似的问题,它试图将消息写入磁盘但速度不够快。在我们的测试中,我们使用 SSD 驱动器时没有出现这个问题。

    对我们来说最简单的解决方案是通过在消息上设置耐用=true 来立即将消息写入磁盘。这也是一个好主意,因为如果 rabbit 重新启动,队列中的数据不会丢失。

    【讨论】:

      【解决方案2】:

      看看这篇关于 RabbitMQ 队列如何使用内存的博文:http://www.rabbitmq.com/blog/2011/10/27/performance-of-queues-when-less-is-more/

      TL;DR 尽量保持队列为空

      【讨论】:

        【解决方案3】:

        最后,为rabbitmq队列找到了一些更好的配置。

        我在 celery 配置中添加了以下行,因为它为每个任务创建了一个额外的队列。

        CELERY_IGNORE_RESULT = 真

        还为我的任务创建了单独的队列。 这样可以保持内存空闲并准备好承担更繁重和更长的任务

        更多信息 https://denibertovic.com/posts/celery-best-practices/

        【讨论】:

          【解决方案4】:

          我在 docker 上运行的 rabbitMQ 服务器中遇到了类似的问题。一切都被阻止了,兔子不会接受任何消息。

          我只是重新配置了Disk Free Space Limit

          rabbitmqctl set_disk_free_limit 1GB 
          

          这改变了“xx GiB low watermark”并解决了问题。

          如果您使用的是“bitnami/rabbitmq” docker 镜像,您可以设置此变量:

          RABBITMQ_DISK_FREE_ABSOLUTE_LIMIT: "1GB"
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多