diff options
| author | Matthias Radestock <matthias@lshift.net> | 2008-10-21 15:59:41 +0100 |
|---|---|---|
| committer | Matthias Radestock <matthias@lshift.net> | 2008-10-21 15:59:41 +0100 |
| commit | 25a63c3e348582e1b407f7961288690553bad166 (patch) | |
| tree | 7f0aa853e4c1760b6feac01a42cc8083b80e31d6 /docs | |
| parent | bcd4affd32ff8dfc4351c1574420d6a615984ada (diff) | |
| download | rabbitmq-server-git-25a63c3e348582e1b407f7961288690553bad166.tar.gz | |
hibernate some processes to conserve memory
In my experiments I encountered situations where rabbit would not
recover from a high memory alert even though all messages had been
drained from it. By inspecting the running processes I determined that
queue and channel processes sometimes hung on to garbage. Erlang's gc
is per-process and triggered by process reduction counts, which means
an idle process will never perform a gc. This explains the behaviour -
the publisher channel goes idle when channel flow control is activated
and the queue process goes idle once all messages have been drained
from it.
Hibernating idle processes forces a gc, as well as generally reducing
memory consumption. Currently only channel and queue processes are
hibernating, since these are the only two that seemed to be causing
problems in my tests. We may want to extend hibernation to other
processes in the future.
Diffstat (limited to 'docs')
0 files changed, 0 insertions, 0 deletions
