[rabbitmq-discuss] Excessive memory consumption of one server in cluster setup
Matthias Reik
maze at reik.se
Fri Aug 24 13:25:42 BST 2012
Hi,
2 days ago I have upgraded our RabbitMQ cluster (2 machines running in
HA mode) from 2.8.1 to 2.8.5.
Mainly to get those OOD fixes in, since we experienced those exact issues.
The upgrade went very smooth, but at some point one of the machines
(server2) started to allocate more
and more memory (even though all queues are more or less at 0 with
almost no outstanding acks)
server 1 uses ~200Mb
server 2 (at the point where I took it down) used ~6Gb
I run a rabbitmqctl report... but it didn't give me any insights
I run a rabbitmqctl eval 'erlang:memory().' but that didn't tell me too
much more (but I will attach that at the end)
I found people with similar problems:
http://grokbase.com/t/rabbitmq/rabbitmq-discuss/1223qcx3gg/rabbitmq-memory-usage-in-two-node-cluster
but that's a while back so many things might have changed since then.
Also the memory difference was
rather minimal, whereas here the difference is _very_ significant,
especially since the node with less load
has the increased memory footprint.
I can upgrade to 2.8.6 (unfortunately I upgraded just before it was
released :-(), but I only want to do that if
there is some hope that the problem is solved.
I can bring server2 back online and try to investigate what is consuming
that much memory, but my
RabbitMQ/Erlang knowledge is not good enough, therefore reaching out for
some help.
So any help would be much appreciated.
Thx
Matthias
Our setup is something like the following:
2 servers exclusively running RabbitMQ on CentOS 5.x (high
watermark ~22Gb),
- both with web-console enabled
- both defined as disk nodes
- both running RabbitMQ 2.8.5 on Erlang R15B01 (after the
upgrade, Erlang was already at R15 before)
10 queues configured with mirroring
3 queues configured (without mirroring) only on server1 with a TTL
Most consumers are connecting to server1, server2 only in case of
failover
We get about 1k messages/sec (with peaks much higher than that) into the
system, and each message is
passed through several queues for processing.
-bash-3.2$ sbin/rabbitmqctl eval 'erlang:memory().'
[{total,5445584424},
{processes,2184155418},
{processes_used,2184122352},
{system,3261429006},
{atom,703377},
{atom_used,678425},
{binary,3216386480},
{code,17978535},
{ets,4142048}]
...done.
More information about the rabbitmq-discuss
mailing list