ejabberd memory leak

If your ejabberd seems to leak memory it might result out of this bug in erlang’s mnesia database. You can easily find out by starting a remote shell to your running ejabberd and whatch results for the following command:

lists:foldl(fun(Tab, Acc) -> ets:info(Tab, memory) * 8 + Acc end, 0, ets:all()).

The bug is fixed at erlang OTP R12B5.

EDIT:
A good description of the problem can also be found at Yaws, Mnesia stress test notes.

4 Responses to ejabberd memory leak


Comments

  1. Comment by Badlop | 2009/01/19 at 13:09:37

    The problem was fixed in OTP R12B-5 or in R12B-4?

    http://www.erlang.org/download/otp_src_R12B-4.readme

    OTP-7419 Mnesia did not garbage collect transaction decisions on disk
    based nodes if no transactions where made on the local node.

  2. Comment by Steve | 2009/01/19 at 13:12:00

    Hi badlop! Yes you’re right, it’s been fixed at otp r12b4 already.

  3. Comment by Anton | 2009/01/22 at 20:12:48

    Hello,

    How do I interpret the results of the command?

    (ejabberd@kpoxtop)1> lists:foldl(fun(Tab, Acc) -> ets:info(Tab, memory) * 8 + Acc end, 0, ets:all()).
    9098288

    Do I have the leak or not?

    Thanks.

  4. Comment by Steve | 2009/01/23 at 15:41:14

    You’ve got the check the value once in a while. If it’s steadily increasing you’ve got a leak obviously.


Comments are closed