我遇到了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,那可能是什么原因?
随着内存使用量持续增长,它最终会达到最大内存水位,不再发布。
答案 0 :(得分:0)
也许您应该将每条消息的大小检查为有效负载。所有消息都将存储在内存中。
如果太大,最好重新设计一下这个消息。