PHP АПК:Что происходит, когда кэш APC заполнен?

StackOverflow https://stackoverflow.com/questions/1053810

  •  20-08-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

В соответствии с БТР:Конфигурация времени выполнения, «В случае нехватки доступной памяти в кеше, кеш будет полностью удален, если ttl равен 0.В противном случае, если значение ttl больше 0, APC попытается удалить записи с истекшим сроком действия».

Поэтому, если существует ненулевое значение TTL, будут удалены записи, срок жизни которых истек.;) Иначе удалит весь кэш.

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top