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

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

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

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

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

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

  • APC (перед обновлением) -->
  • OPCache + нет APCu -->
  • OPCache + APCu + WP плагин для APCu

сейчас я просто тусуюсь с OPCache, и нет APCu.

  1. как я могу достичь той же производительности? Мне понравился интерфейс администратора, мне понравилось, как быстро это было. Честно говоря, я не вижу, как это вообще улучшается, это довольно удручающе... если только нет какой-то супер библиотеки, о которой я не знаю. Это, конечно, не то, что у меня есть, или, может быть, он не настроен хорошо.
  2. предполагая, что ответ на #1 "Вы настроили его как шары", тогда вы не возражаете взглянуть на это и посмотреть, разумно ли это?

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

конфигурация:

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

3 ответов


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

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

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+ работает по-другому и помечает такую память как "грязную", но никогда не восстанавливает ее. Как только грязный процент поднимается выше настраиваемого порога-Optimizer + перезапускается. Обратите внимание, что это поведение имеет стабильность преимущества и недостатки.

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

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