RabbitMQ内存使用情况

时间:2018-10-26 11:17:18

标签: database memory-leaks statistics rabbitmq

我目前正在生产中的Ubuntu(16.04)上使用RabbitMQ(3.6.2-1)。生产者发布消息,而使用者使用消息,一切正常,但是有时候RabbitMQ不会释放内存,它会占用最大内存,并且生产者无法将消息发布到空队列中,因此我必须重新启动服务。

是错误还是其他?

enter image description here

更新:

来自管理插件,因此您可以通过以下解决方案之一解决此问题:

1。更新RabbitMQ版本(3.6.15稳定)

2。定期(每小时crontab)重新启动统计数据库https://www.rabbitmq.com/management.html#stats-db

3。在rabbitmq.config文件中将rates_mode设置为none(这不是一个好主意,因为在这种情况下,您看不到消息速率)

1 个答案:

答案 0 :(得分:1)

您应该检查队列中包含的消息数。

默认情况下,RabbitMQ使消息在内存中保持快速。

如果必须处理大量消息,则可以使用惰性队列: https://www.rabbitmq.com/lazy-queues.html 使用惰性队列,您可以处理数百万条消息,而不会过多影响节点内存。

或者可能是内存损坏问题,请参阅: http://rabbitmq.com/management.html#stats-db 在您的罐子里,您可以运行:

rabbitmqctl eval 'supervisor2:terminate_child(rabbit_mgmt_sup_sup, rabbit_mgmt_sup), rabbit_mgmt_sup_sup:start_child().' 重置统计信息并释放内存。 您可以定期调用

注意:

有多种方法可以重置统计信息,具体取决于Rabbitmq版本here的所有细节