Когда APC удаляет старые записи?

75
4

Я изо всех сил пытаюсь найти какую-либо логику в том, как APC очищает свои старые записи. Особенно с пользовательскими вводами я замечаю, что фрагментация быстро увеличивается до неожиданных уровней.

Хотя apc.ttl и apc.user_ttl установлены в 3600, я замечаю много старых записей в кэше APC, которые не очищаются. Я неоднократно увеличивал размер памяти для APC, но это только заставляет ее продлиться немного дольше, прежде чем достичь 100% -ной фрагментации.

Итак, почему это могло произойти? На самом деле я считаю это ошибкой в APC, это просто не нормальное поведение. Я ожидаю, что какой-то процесс APC будет время от времени удалять старые записи.

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

спросил(а) 2021-01-19T13:53:28+03:00 2 месяца, 3 недели назад
1
Решение
107

Если вы хотите, чтобы старые значения были удалены. Вам нужно явно удалить его.

Я использую сочетание APC и memcached в своих приложениях. APC обеспечивает кэширование кода операции, а также кэширует локальные данные, которые, вероятно, останутся неизменными (например, файлы конфигурации). Все остальные объекты кэшируются в memcached с использованием какой-либо прочитанной логики. (Получается, если данные изменены)

Когда я делаю новый выпуск, я перезапускаю APC (через apache или php, если это отдельный процесс). Это очистит кэш APC, и вскоре после этого файлы конфигурации будут перезагружены. Я перезапущу memcached, если объекты значительно изменились, чтобы вызвать проблемы, если он загружает старые данные кеша.

ответил(а) 2021-01-19T13:53:28+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема