PHP APC: что происходит, когда кэш APC заполнен? - PullRequest
13 голосов
/ 28 июня 2009

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

Ответы [ 2 ]

16 голосов
/ 28 июня 2009

Согласно APC: Runtime Configuration , "В случае, если кешу не хватает доступной памяти, кеш будет полностью удален, если ttl равен 0. В противном случае, если ttl больше чем 0, APC попытается удалить просроченные записи. "

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

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

5 голосов
/ 08 мая 2010

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

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

...