APC снижает производительность php ??? (php 5.3, apache 2.2, Windows Vista 64bit) - PullRequest
0 голосов
/ 27 мая 2010

У меня есть Apache / 2.2.15 (VC9) и PHP / 5.3.2 (потокобезопасный VC9), работающий в качестве модуля apache на 64-битной машине Vista. Все работает нормально.

Проект, который я тестирую (с помощью утилиты apache ab), в основном является стандартным проектом Zend Framework без участия db-соединения. Средний (средний) ответ apache составляет около 0,15 секунд .

После того, как я установил APC (потокобезопасность 3.1.4-dev VC9) со стандартными настройками, внезапно время отклика запроса увеличилось до 1,3 секунды (!) , что недопустимо ... Все настройки apc выглядел всегда хорошо (через скрипт apc.php: достаточно памяти shm, кеш не заполнен, фрагментация 0%).

Единственное отличие заключалось в том, чтобы отключить поиск статистики (apc.stat = 0). Затем отклик упал до 0,09 секунды , что в итоге оказалось лучше, чем без APC. IIRC, ожидается и очевидно, что поиск статистики создает некоторые издержки, но разве он не должен быть намного более производительным по сравнению с запуском без расширения apc?

Или, по-другому, почему apc.stat создает так много накладных расходов?

Ответы [ 3 ]

1 голос
/ 28 мая 2010

Обновление : Я обнаружил, что основное замедление было вызвано антивирусным программным обеспечением ... Я не понимаю, почему это происходит (почему только с apc), но это больше не проблема (ПРИМЕЧАНИЕ : это машина разработчика)

Теперь при работе с apc (apc.stat = 1) время отклика составляет около 0,13 сек , что немного лучше, чем без apc ( 0,15 сек ). Это намного лучше, чем ожидалось, но я оставлю это пока ...

Спасибо, symcbean за ответ.

1 голос
/ 27 мая 2010

Похоже, что проверка статистики обходит файловый кеш - но я хотел бы думать, что даже Microsoft NT может гарантировать, что файловый кеш согласован.

(FWIW: мой опыт работы с apc заключался в том, чтоэто дало значительное улучшение в Linux)

Я бы предложил попробовать другую файловую систему - но с NT выбора не так много.

Если вы уверены в своих результатах (вы перезагружались между тестами или просто перезагружали Apache?), Тогда опубликуйте сообщение об ошибке на http://bugs.php.net/ (там, похоже, уже ничего не связано)

C.

Edit

.. хотя мне только что пришло в голову - что происходит с вашей системной памятью во время выполнения тестов?Если вы использовали всю свою физическую память с экземплярами ab, то у вас НЕТ кеша файлов.

0 голосов
/ 28 мая 2010

Антивирус тупой, он будет думать, что каждый раз, когда APC запускается и генерирует вывод, появляется новое приложение и собирается его повторно сканировать. Вы должны увидеть улучшение, если отключите кэширование «apc.cache_by_default = Off», хотя было бы лучше просто отключить AV для сканирования скомпилированных файлов.

...