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 "Вы настроили его как шары", тогда вы не возражаете взглянуть на это и посмотреть, разумно ли это?
для моей установки я использую последнюю версию 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