У меня действительно странная проблема, и я немного заблудился, потому что не знаю, что делать дальше.
Мы запускаем в производство 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 мог утечка памяти (такие вещи случаются), но это проявится в учете памяти. При отсутствии довольно маловероятной ошибки ядра учет памяти будет точным. Короче и короче: вы чего-то упускаете в своей диагностической деятельности. Соберите больше данных и смотрите на них.