APC демонстрирует 100% фрагментацию - PullRequest
16 голосов
/ 17 февраля 2010

APC показывает 100% фрагментацию. Это плохо?

Значит ли это, что это совсем не помогает? По каким путям я могу пойти, чтобы улучшить ситуацию?

Заранее спасибо.

Ответы [ 3 ]

11 голосов
/ 04 июня 2010

По моему опыту, да. У меня была система, в которой APC показывал 100% фрагментацию, а производительность была плохой. Я увеличил лимит памяти APC (до 200 МБ в моем случае - но у нас было много кода) достаточно, чтобы освободить место. Фрагментация упала до нуля, и IIRC, загрузка ЦП на сервере снизилась на 50%.

Также убедитесь, что вы используете скрипт apc.php, поставляемый с APC, для мониторинга фрагментации / использования. Мы даже написали проверку nagios для просмотра APC, потому что у нас достаточно трафика, чтобы apache полностью блокировался при заполнении APC.

Мораль истории: предоставьте APC достаточно памяти и следите за использованием.

2 голосов
/ 28 сентября 2011

Фрагментация означает, что apc часто выбрасывает элементы из своего кэша, добавляет новые и имеет проблемы с поиском достаточно больших непрерывных блоков.

Есть два основных способа улучшить производительность, затем

  • Дайте больше памяти APC. В идеале APC может хранить ваши полные сценарии в памяти.
  • используйте apc.filter в php.ini, чтобы отфильтровать файлы, которые не часто запрашиваются или часто изменяются.

Также использование apc_store () с коротким временем жизни плохо, так же как и перезапись с использованием apc_store ().

1 голос
/ 17 февраля 2010

[...] Фрагментация - это то, что ухудшает производительность, а не размер памяти как таковой. Но также кажется, что фрагментация происходит, когда памяти мало [...]

Обратите внимание, что, похоже, ошибка в графике apc.php: http://pecl.php.net/bugs/bug.php?id=13146

...