Назад | Перейти на главную страницу

Memcached, возможно, утечка памяти

У меня действительно странная проблема, и я немного заблудился, потому что не знаю, что делать дальше.

Мы запускаем в производство 4 выделенных модуля memcached. Все ящики имеют 48 ГБ оперативной памяти, они работают с memcached и ничем другим, а предел памяти демона установлен на 42 ГБ.

Проблема заключается в том, что независимо от объема трафика и получения / установки ящиков, получающих кеш, будет заполняться на всех 4 из них примерно до 38 ГБ, но затем объем свободной оперативной памяти, доступной для операционной системы, начнет медленно уменьшаться в течение несколько дней пока ящики не начнут меняться, заваливать своп и лупить! Это действительно странно, поскольку на ящиках нет ничего другого, что могло бы заполнить остальную часть ОЗУ, а memcached съедает 38 ГБ и не растет (по крайней мере, это то, что показывают графики и статистика).

Я попытался установить для swappiness значение 0, но это не помогло. Я попытался еще больше снизить лимит кеша, но у меня такое же поведение.

Я использую Centos 5.6, 2.6.18-238, memcached 1.4.4 и libevent-1.4.13-1.

Кто-нибудь из вас раньше сталкивался с подобной проблемой? Может быть, memcached имеет утечку памяти и не отображается на графиках или в обычных инструментах Linux?

Спасибо! Дэн

Перво-наперво: действительно ли вам необходимо иметь такой высокий предел памяти для memcached? Достаточно ли на практике менее 42 ГБ?

Memcached мог утечка памяти (такие вещи случаются), но это проявится в учете памяти. При отсутствии довольно маловероятной ошибки ядра учет памяти будет точным. Короче и короче: вы чего-то упускаете в своей диагностической деятельности. Соберите больше данных и смотрите на них.