Что заставляет memcache удалять ключи?

Наша установка memcache недавно начала удалять ключи, и мы не уверены, почему. Большие группы ключей исчезают одновременно.

Memcache сообщает, что выселений мало или вообще не существует, и наше приложение не может очистить memcache (оно может удалять только определенные ключи). Даже ключи, о которых приложение не знает, удаляются, поэтому мы уверены, что срок их действия истек. Тем не менее, наша конфигурация memcache не была затронута в течение некоторого времени.

Кто-нибудь ранее решал подобные проблемы, и если да, то какие шаги вы бы порекомендовали предпринять? Насколько гибка политика истечения срока действия memcache - возможно ли, что мы внезапно столкнемся с критерием, основанным (скажем) на частоте записи в ключ?

2 ответа

Решение

Это произошло из-за того, что некоторый отладочный код был оставлен в приложении при его развертывании.

Код отладки вручную вызывается Memcache::flush.

Я думаю, что мораль этой истории такова: "Каждый раз, когда вы говорите" это не может быть заявлением ", вы, вероятно, ошибаетесь". Вы могли бы подумать, что я знал бы это, когда я задал этот вопрос, но, видимо, я мог время от времени делать напоминания.

Даже если вы установили, что ключи не истекают в Memcached, записи будут удаляться в соответствии с наименьшим количеством использовавшихся недавно, если Memcached заполняется. Стандартный механизм хранения на основе блоков сохраняет записи в виде фрагментов фиксированного размера, которые выделяются из блоков размером 1 МБ. Хотя это быстро, это также означает, что Memcached может в итоге тратить довольно много памяти. После размещения плиты для хранения фрагментов определенного размера, я не думаю, что их можно изменить. Если смесь больших и маленьких объектов кэшируется, и состав со временем изменяется, возможно, что memcached в конечном итоге будет хранить маленькие объекты в гораздо больших блоках, если они являются единственными доступными.

Это одна из проблем, которую такие компании, как gear6 (www.gear6.com) и northscale (www.northscale.com), затрагивают в своих дистрибутивах Memcached.

Другие вопросы по тегам