APC -> APCu / OPCache, производительность низкая

У меня есть экземпляр m3.xlarge EC2, который я обновил до PHP 5.5.11 сегодня.

С этим обновлением он перезаписал php55-pecl-apc с php55-pecl-apcu .

После чтения и экспериментирования я понимаю, что APC был заменен OPCache , за исключением хранилища ключевых значений, которое можно вернуть с помощью APCu .

После настройки моей конфигурации на то, что выглядит разумно, использование WordPress во время входа в систему сейчас ужасно медленное, по крайней мере на 300-900 м хуже (передний конец кэшируется через лак и отлично работает … но когда вы используете администратора, сознательно не кэшируется и не замедляется, как грех).

Я выполнил ряд тестов, когда обновлялся, с небольшим размером выборки для каждого шага. Когда я продолжал, он ухудшался все хуже и хуже.

  • APC (до обновления) -->
  • OPCache + нет APCu -->
  • OPCache + APCu + WP Plugin для APCu

Прямо сейчас я просто болтаюсь с OPCache, и нет APCu.

  1. Как я могу достичь такой же производительности? Мне понравился интерфейс администратора, мне понравилось, как быстро это было. Я, честно говоря, не вижу, как это вообще улучшается, это довольно удручающе … если не существует какой-то супер-библиотеки, о которой я не знаю. Это, конечно, не то, что у меня есть, или, может быть, оно плохо настроено.
  2. Предполагая, что ответ на # 1 – это «вы настроили его как шары», то не могли бы вы взглянуть на это и посмотреть, разумно ли это?

Для моей настройки я использую последний wordpress, несколько больших плагинов, но я не могу их снять, потому что они важны. К счастью, лак заботится о большей части работы. У меня 4 ядра, 16 ГБ памяти, ~ 10 тыс. Файлов в корне моего сайта. У меня также нет настоящих хардкорных приложений или чего-то другого, кроме WordPress, это довольно ванильная настройка. Я думаю, это все, что может помочь.

Config:

 zend_extension=opcache.so opcache.enable=1 opcache.enable_cli=0 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.max_wasted_percentage=5 opcache.use_cwd=1 opcache.validate_timestamps=1 opcache.revalidate_freq=0 opcache.revalidate_path=0 opcache.save_comments=0 opcache.load_comments=0 opcache.fast_shutdown=1 opcache.enable_file_override=0 opcache.optimization_level=0xffffffff opcache.inherited_hack=1 opcache.dups_fix=0 opcache.blacklist_filename=/etc/php-5.5.d/opcache*.blacklist opcache.max_file_size=2M opcache.consistency_checks=1 opcache.force_restart_timeout=180 opcache.error_log=/var/log/php-fpm/5.5/opcache.log opcache.log_verbosity_level=1 opcache.preferred_memory_model= opcache.protect_memory=0 и zend_extension=opcache.so opcache.enable=1 opcache.enable_cli=0 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.max_wasted_percentage=5 opcache.use_cwd=1 opcache.validate_timestamps=1 opcache.revalidate_freq=0 opcache.revalidate_path=0 opcache.save_comments=0 opcache.load_comments=0 opcache.fast_shutdown=1 opcache.enable_file_override=0 opcache.optimization_level=0xffffffff opcache.inherited_hack=1 opcache.dups_fix=0 opcache.blacklist_filename=/etc/php-5.5.d/opcache*.blacklist opcache.max_file_size=2M opcache.consistency_checks=1 opcache.force_restart_timeout=180 opcache.error_log=/var/log/php-fpm/5.5/opcache.log opcache.log_verbosity_level=1 opcache.preferred_memory_model= opcache.protect_memory=0 

Прямо сейчас вы проверяете каждый файл при каждом запросе изменений, который, вероятно, не является тем, что вы хотите в производственной системе.

Я обычно просто отключил его (не забудьте перезапустить веб-сервер после внесения изменений):

 opcache.validate_timestamps=0 

Кроме того, вы можете попробовать установить частоту на что-то отличное от 0 и сохранить ее включенным:

 opcache.validate_timestamps=1 opcache.revalidate_freq=300 

Это должно теоретически проверять изменения каждые 5 минут.

У вас также есть

 opcache.consistency_checks=1 

Который согласно сказанным документам замедляет производительность. Отключите это.

opcache.consistency_checks integer

Если ненулевое значение, OPcache проверяет контрольную сумму кеша каждые N запросов, где N – значение этой директивы конфигурации. Это должно быть включено только при отладке, так как это ухудшит производительность.

Из RFC, который отвечал за включение OPCache в PHP:

APC может восстановить память старых недействительных скриптов. APC использует диспетчер памяти и может вернуть память, связанную со сценарием, который больше не используется; Оптимизатор + работает по-разному и отмечает такую ​​память как «грязную», но на самом деле не восстанавливает ее. Как только грязный процент поднимается выше настраиваемого порога – Optimizer + перезапускает себя. Обратите внимание, что это поведение имеет как преимущества стабильности, так и недостатки.

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

Ссылка: https://wiki.php.net/rfc/optimizerplus#advantages_of_apc_over_optimizer