Rabbitmq高水印集发行

14ifxucb  于 2023-03-30  发布在  RabbitMQ
关注(0)|答案(5)|浏览(129)

这是我在rabbitmq消息代理中得到的
=INFO REPORT==== 2015年1月13日::12:40:24 === vm_memory_high_watermark设置。已用内存:478063864允许内存:415868518
=警告报告=== 2015年1月13日::12:40:24 ===在节点“rabbit@matchpointgps-141110”上设置内存资源限制警报。

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

在我们的服务器上已经发生了两次。我仍然无法得到正确的解决方案。

6ljaweal

6ljaweal1#

当队列长度变得非常高时,我们也遇到了类似的问题,它试图将消息写入磁盘,但速度不够快。在我们的测试中,当我们使用SSD驱动器时,我们没有遇到这个问题。
对我们来说,最简单的解决方案是通过在消息上设置durable=true来立即将消息写入磁盘。这也是一个好主意,因为如果rabbit重新启动,队列中的数据不会丢失。

z5btuh9x

z5btuh9x2#

看看这篇关于RabbitMQ队列如何使用内存的博客文章:http://www.rabbitmq.com/blog/2011/10/27/performance-of-queues-when-less-is-more/
TL;DR尽量保持队列为空

2jcobegt

2jcobegt3#

最后,找到了一些更好的rabbitmq队列配置。
我已经添加了下面一行到celery 配置,因为它是创建一个额外的队列为每个任务。
CELERY_IGNORE_RESULT =真
并且还为我的任务创建了单独的队列。这使得内存空闲,并准备好承担更重和更长的任务
更多信息https://denibertovic.com/posts/celery-best-practices/

oewdyzsn

oewdyzsn4#

我在一个运行在docker上的rabbitMQ服务器上遇到了类似的问题。所有的东西都被阻止了,rabbit不会接受任何消息。
我只是重新配置了磁盘可用空间限制:

rabbitmqctl set_disk_free_limit 1GB

这改变了“xx GiB低水印”并解决了问题。
如果你使用的是“bitnami/rabbitmq”docker镜像,你可以设置这个变量:

RABBITMQ_DISK_FREE_ABSOLUTE_LIMIT: "1GB"
7ivaypg9

7ivaypg95#

我遇到了类似的问题。默认情况下,RabbitMQ将阻止传入消息,如果它开始使用超过40%的可用ram。如果你打开'rabbitmq.conf'文件(通常保存在计算机上的AppData文件夹中),你可以增加它。我通过添加这一行将我的更改为90%:
vm_memory_high_watermark.relative = 0.9
你必须在完成这个操作后重置RabbitMQ服务才能看到效果。希望这对你有帮助!

相关问题