RabbitMQ 内存使用情况

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

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

这是一个错误还是其他什么?

更新:

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

1.更新您的RabbitMQ版本(3.6.15稳定)

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

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

database memory-leaks statistics rabbitmq
2个回答
2
投票

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

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版本,这里所有细节


0
投票

这个答案肯定对解决原始问题没有帮助,但对于像我这样现在面临内存消耗问题的人来说可能很有用(Rabbit MQ 版本 3.9.16)。使用

info
中的
rabbitmq.conf
级别记录到文件:

log.file.level = info

如果不重新使用此日志文件,还会导致内存消耗不断增长(不包括磁盘使用量,而且规模更大)。 例如,可以通过将该文件的大小限制为约 10 Mb 来解决此问题。文件大小减小得越多,效果就越大。 也在

rabbitmq.conf

log.file.rotation.size = 10485760
© www.soinside.com 2019 - 2024. All rights reserved.