Замена Стратегия
Не ожидайте FIFO или LRU. Это ничего не работает. Кэш Opcode хранит код при первом доступе к файлу PHP, оптимизирует внутренний код и принимает решение о возобновлении файлов в кеше на основе временных интервалов и штампа изменения файла и используемой памяти.
Итак, ключевые вопросы: сколько файлов нужно кэшировать? Сколько памяти для хранения? Что такое внутренняя оптимизация кода? Как исключить файлы? Когда он обновит файлы? Если вы хотите, чтобы понять OpCache в глубине, вы найдете большую рецензию на Julien Pauli здесь: http://jpauli.github.io/2015/03/05/opcache.html
Как я могу решить проблему, не имея наиболее часто используемые файлы в кэше.
Я бы увеличил размер памяти и максимальные настройки файла, пока эти файлы не будут кэшированы.
Однако, если достигнут максимум, у меня есть много файлов, которые я могу не захотеть в кеше.
opcache.blacklist_filename
на помощь. Вы можете использовать файл черного списка, чтобы описать, какие файлы не следует ускорять.
Важное примечание. Вы не можете инициировать удаление кеша с помощью функции opcache-invalidate(). Это будет просто отмечать уже кэшированный файл для перекомпиляции и повторного добавления в кеш (перекомпилировать/обновить). Полное удаление файлов из кеша требует перезагрузки или перезапуска; который всегда вызывает всплеск.
OpCache Readme содержит следующие советуют:
Speed Tuning
Мы рекомендуем следующие параметры конфигурации для лучшей производительности в производственной среде.
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
Вы также можете добавить следующее, но это может нарушить некоторые приложения и рамки. Пожалуйста, прочитайте описание этих директив и добавьте их на свой страх и риск.
opcache.save_comments=0
opcache.enable_file_override=1
Существует очень мало документации о том, как настроить это для лучшей производительности
Стратегия настройки производительности
Нахождение оптимальных параметров основано на большом количестве вещей , Вы можете использовать стратегию тестирования A/B или A/B/C для поиска хороших значений для директив конфигурации.
Ваша начальная точка - это активированный OpCache с настройками по умолчанию для запуска теста производительности A. Затем вы должны настроить или настроить некоторые директивы OpCache, чтобы изменить поведение кэширования и выполнить тест производительности B. Наконец, вы можете сравнить результаты и провести вывод, если изменения в директивах дают желаемые результаты и улучшают производительность.
Cache прогрев
Когда кэш пуст запустить скрипт, который путешествует «горячие пути» (обычно используемые пути вашего приложения). Это гарантирует, что основные файлы имеют покрытие кеша с самого начала.
GUI инструменты
Чтобы посмотреть статистику, файлы кэшируются и память, используемая, вы также можете использовать один из «инспекторов» OpCache. Это дает вам обзор и позволяет вам находить файлы для исключения из кеша.
Некоторые директивы, связанные производительности
http://php.net/manual/de/opcache.configuration.php
opcache.memory_consumption
. Значение по умолчанию - 64 МБ. Вы можете поднять его.
opcache.max_accelerated_files
- максимальное количество кэшированных файлов. Чтобы узнать количество файлов: find . -type f -print | grep php | wc -l
.
- Важная инструкция
opcache.optimization_level
. Подробнее см. https://stackoverflow.com/a/21291587/1163786
opcache.interned_strings_buffer
- Оптимизатор использует технику, называемую прерыванием строк, для повышения производительности. Что в основном означает, что если ваше приложение использует строку «Hello World» 100 раз, строка будет храниться только 1 раз, что сохраняет 99 хранилищ строк и приводит к 99 обращению к уже существующему значению. 4MB
по умолчанию. Попробуйте 8, 12, 16.
opcache.validate_timestamps=0
означает, что дополнительные статусные звонки удаляются.
opcache.save_comments
- Использует ли ваше приложение аннотации docblock внутри комментариев? Если нет, выключите. Это экономит память.
opcache.load_comments
- Комментарии либо находятся в кеше, либо не зависят от opcache.save_comments. Эта директива означает «не загружать кешированные комментарии». Кажется, что материал кэшируется, который никогда не используется. Я должен администратор, что я не получаю прецедент для этой директивы. Другими словами: я использую opache.save_comments
для управления добавлением комментариев.
opcache.fast_shutdown
- Это метод, чтобы быстрее вызвать деконструкторов. Включить.
Это отличный ответ. Спасибо! – timhysniu
Рад, что я мог помочь :) –