PHP APC: Что происходит, когда кеш APC заполнен?
Что происходит, когда вы пытаетесь добавить переменную в APC, и кеш APC заполнен? Он автоматически удаляет из кэша наименее используемую переменную?
Ответы
Ответ 1
В соответствии с APC: Конфигурация времени выполнения, "В случае нехватки кеша из доступной памяти кеш будет полностью удален, если ttl равен 0. В противном случае, если ttl больше 0, APC попытается удалить истекшие записи."
Итак, если есть ненулевой TTL, он удалит записи, время прохождения которых прошло.;) В противном случае он удалит весь кеш.
Я замечаю, что это действительно не касается того, что происходит, если в кеше заканчивается память, и у вас слишком высокий TTL.
Ответ 2
Из опыта (мы запускаем его в процессе производства), если вы не устанавливаете TTL или TTL очень высок, и ничего не устарело, весь кеш очищается (как в пустом). Вы действительно хотите попытаться избежать этого, так как это вызовет всплеск нагрузки при следующем запросе, с которым приходится сталкиваться PHP, поскольку для каждого файла, необходимого для APC, необходимо будет скомпилировать его и сохранить в памяти (что в качестве немного более медленного процесса, чем вообще не включен кеш). Кроме того, если вы получаете много трафика и пустой кеш, вы будете испытывать кэш-шлемы (см. Google о злобности этого)
В качестве дополнительной заметки см. эту старую презентацию для довольно грубого руководства по APC и тому, что нужно следить за http://www.slideshare.net/oscon2007/os-gopal. Возможно, что-то возможно устаревший, но теория по-прежнему сохраняется.