Ejabberd Потребление памяти (или утечка?) - PullRequest
2 голосов
/ 06 декабря 2009

Я использую ejabberd + mochiweb на нашем сервере. Чем дольше я продолжаю работать с ejabberd и mochiweb, тем больше памяти расходуется (вчера вечером она занимала 35% памяти. Сейчас она чуть выше 50%). Я думал, что это просто проблема сбора мусора, поэтому я установил Erlang R13B3 и перезапустил ejabberd. Это не исправило это все же.

Итак, я заметил, что при чуть более 50% полного потребления памяти, похоже, что ejabberd начинает «отпускать» память и остается на уровне около 50%. Это нормально? Является ли ~ 50% порогом для ejabberd, так что, когда он достигает его, он говорит: «Привет, пора освободить память ...» и, возможно, он оставит все остальное для быстрого доступа (например, кеширование mnesia?)

Я ценю любой вклад. Спасибо!

Ответы [ 3 ]

1 голос
/ 09 декабря 2009

Оказывается, утечки памяти нет (ууу!) Ejabberd занимает только <40MB. Наконец, я увидел свет, когда увидел графики использования на EngineYard - фактически используется только 288 МБ, буферизуется 550 МБ, а кэшируется 175 МБ. Мой сервер ejabberd обновляет каждые 2,5 секунды от каждого клиента, чтобы объяснить, почему так много буферизируется / кэшируется. </p>

Спасибо за вашу помощь.

1 голос
/ 06 декабря 2009

Запускайте erlang:memory(). в вашей оболочке время от времени. Вы также можете попробовать erlang:system_info(Type). с allocated_areas и allocator. Это должно дать вам подсказку о том, какая память просачивается.

Вы также можете настроить memsup , чтобы предупредить вас о процессах, выделяющих слишком много памяти.

0 голосов
/ 06 декабря 2009

Вновь созданные атомы в процессах эрланга получают никогда мусора. Это может быть проблемой, когда процессы регистрируются алгоритмом, который создает имена атомов случайным образом, например. случайно созданные строки.

...