RabbitMQ内存使用量增长过高

时间:2013-04-24 06:42:00

标签: java memory memory-management erlang rabbitmq

我遇到了rabbitmq 2.8.5的问题。消息发布到3个队列,消费者相对较快地消费它们。所以队列根本不大。 每个队列有3个交换机。 然而,rabbitmq上的记忆继续增长。

我尝试运行两个不同的命令来了解内存发生了什么,但是当我运行时,rabbitmq会挂起。

rabbitmqctl eval '[[{pid, R}, M | process_info(R)] || {M, R} <- 
lists:sublist(lists:reverse(lists:sort([{process_info(P, memory), P} || 
P <- erlang:processes()])), 10)].'

'lists:sublist(lists:reverse(lists:sort([{process_info(Pid,memory), Pid, 
sys:get_status(Pid,infinity)} || Pid <- [element(7, Q) || Q <- 
rabbit_amqqueue:list()]])), 10).'
然后我尝试观察运行rabbitmq的erlang vm上的内存使用情况,以及9235(我认为它的字节数)。

因此,如果队列和交换不是很大而且Erlang Ram远远低于rabbitmq,那可能是什么原因?

随着内存使用量持续增长,它最终会达到最大内存水位,不再发布。

1 个答案:

答案 0 :(得分:0)

也许您应该将每条消息的大小检查为有效负载。所有消息都将存储在内存中。

如果太大,最好重新设计一下这个消息。