rabbitmq集群跨机器访问引起内存占用高的问题

rabbitmq的队列并不是分布在集群中,而且每个节点维护自己的

假设A B组成一个集群,rabbit域名或elb指向A,那么client会连接到A。但如果目标queue在B上,rabbit就会有一个内部的“转发机”的机制来维护,相当于代理一样。通过该机制,client仍能正常操作queue

但有一个问题就是,该机制可能会引发内存升高。譬如,B的内存只有100M,A可能会达到1.5G,而此时A上的消息并未有堆积,也不繁忙

rabbitmq主要内存开销是内部database。上述问题的表现,就是binarys这个内存项目非常大

所以如果你的mq出现内存偏高,在确定无mq和erlang版本问题后,不妨从这个角度考虑一下:

将所有流量打到其队列所在的那个实例,不要跨机

posted @ 2017-12-06 16:35  Els0n  阅读(2215)  评论(0编辑  收藏  举报