Вопрос по php – PHP APC: что происходит, когда кэш APC заполнен?

13

Что происходит, когда вы пытаетесь добавить переменную в APC, и кэш APC заполнен? Это автоматически удаляет наименее используемую переменную из кэша?

Ваш Ответ

2   ответа
16

В соответствии сAPC: конфигурация времени выполнения, & quot; В случае, если в кеше не хватает доступной памяти, кэш будет полностью удален, если ttl равен 0. В противном случае, если ttl больше 0, APC попытается удалить просроченные записи. & quot;

Так что, если есть ненулевой TTL, он удалит записи, время которых прошло. ;) В противном случае будет удален весь кеш.

Я заметил, что это не решает, что происходит, если в кеше не хватает памяти и у вас слишком высокий TTL.

5

Из опыта (мы запускаем его в производстве), если вы не установите TTL или TTL очень очень высок и ничего не устарело, весь кэш сбрасывается (как в пустом). Вы действительно хотите попытаться избежать этого, так как это вызовет скачок нагрузки при следующем запросе, с которым PHP должен иметь дело, потому что для каждого необходимого файла APC необходимо будет скомпилировать его и сохранить в памяти (что немного медленнее, чем процесс кеш вообще не включен). Кроме того, если вы получаете много трафика и пустой кеш, вы будете испытывать сбой кеша (смотрите злобность этого в Google)

Как примечание, посмотрите эту старую презентацию для довольно грубого руководства по APC и вещей, которые нужно остерегатьсяhttp://www.slideshare.net/oscon2007/os-gopal Что-то может быть устаревшим в этом, но теория все еще верна.

Ссылка больше не работает :(
Обновили ссылку, чтобы она указывала на все еще работающую версию тех же слайдов
Cache slam больше не должен быть проблемой, так как APC ввел write_lock.php.net/manual/en/apc.configuration.php#ini.apc.write-lock

Похожие вопросы