Использует ли PHP APC, если работает как модуль apache с prefork?

Я установил APC, но я не наблюдаю такого большого влияния на производительность, как ожидал. На самом деле, я не уверен, что наблюдаю какую-либо выгоду, хотя, возможно, это только потому, что время, затрачиваемое процессором на интерпретацию php-кода, ничтожно мало по сравнению с выполнением моего собственного кода.

Поэтому мне интересно: возможно ли это потому, что я использую PHP как модуль apache (в отличие от fastcgi) и / или потому что php использует prefork (в отличие от worker)? Любой из них как-то побеждает улучшение производительности, которое может быть достигнуто с помощью APC?

1 ответ

Решение

APC корректно работает с mod_php в том смысле, что все процессы Apache совместно используют один и тот же кэш APC. Фактически, конфигурация FastCGI может быть более проблематичной в этом отношении (например, при использовании mod_fcgidОбщий кэш APC не будет работать должным образом; однако php-fpm не должен иметь таких проблем).

APC может потребоваться некоторая настройка, чтобы работать хорошо; например, размер разделяемой памяти по умолчанию (apc.shm_size=32M), вероятно, слишком маленький. Вы можете использовать apc.php Сценарий, распространяемый вместе с APC, чтобы получить некоторые показатели производительности для вашего кэша - поместите сценарий в доступный через Интернет каталог, обслуживаемый тем же экземпляром кэша (с mod_php это означает "любой виртуальный хост в том же экземпляре Apache") и получать к нему доступ через веб-браузер, пока на вашем реальном сайте присутствует некоторая загрузка. Ваш кэш не должен заполняться при нормальной загрузке сайта (это нормально, если кэш переполняется при некоторых редких административных запросах, но PHP-код, используемый для ответа на запросы от обычных пользователей сайта, всегда должен помещаться в кэш для получения максимальной производительности).

Другие вопросы по тегам