summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2008-10-21 15:59:41 +0100
committerMatthias Radestock <matthias@lshift.net>2008-10-21 15:59:41 +0100
commit25a63c3e348582e1b407f7961288690553bad166 (patch)
tree7f0aa853e4c1760b6feac01a42cc8083b80e31d6 /scripts
parentbcd4affd32ff8dfc4351c1574420d6a615984ada (diff)
downloadrabbitmq-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 'scripts')
0 files changed, 0 insertions, 0 deletions