Мы работаем с PHP и используем memcached v1.4.6 для кэширования. Мы используем расширение memcache memcache-2.2.6 из PECL. Мы используем постоянное соединение для подключения к memcached.
Недавно мы внесли некоторые изменения, которые удвоили количество ключей, хранящихся в memcached. Длина этих клавиш составляет от 75 до 80 символов. Сохраненные значения являются целыми числами.
Всякий раз, когда мы пытаемся работать с новым кодом, система работает нормально в течение первых нескольких секунд (обычно менее 10 секунд). Через первые несколько секунд memcache начинает возвращать «false» для каждого запроса (получить, установить, увеличить)
Если на этом этапе мы вернемся к старому коду, все снова начнет работать нормально.
Частота запросов на нашем memcached сервере составляет около 270 запросов в секунду (со старым кодом). Ожидается, что с новым кодом это число возрастет до 1000 запросов в секунду.
Когда memcache начинает возвращать «false», около 15% выделенной памяти освобождается.
Что может быть причиной такого поведения?