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版本問題后,不妨從這個角度考慮一下:
將所有流量打到其隊列所在的那個實例,不要跨機
