2016-07-11 13 views
3

Я понимаю, что APC заменяется OpCache. Я включил этот модуль, и все работает до сих пор. Однако очень мало документации о том, как настроить это для лучшей производительности.Стратегия замены PHP Opcache

В моей системе в настоящее время имеется тонна файлов, которые необходимо кэшировать. Поэтому, если эти файлы делают это в кеше, тогда все отлично. Однако, если max достигнут, у меня есть много файлов, которые я, возможно, не хочу использовать в кеше.

Предпочтительно, я хотел бы кэшировать файлы, которые будут иметь самый высокий коэффициент попадания. Поэтому было бы неплохо узнать, что такое стратегия замены, которую использует Opcache, если вообще. Как решить проблему, не имея наиболее часто используемых файлов в кеше. Любой из FIFO, LRU, будет хорошо работать для моей системы, но я пока не нашел никакой документации.

Любая помощь будет оценена!

ответ

4

Замена Стратегия

Не ожидайте 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 - Это метод, чтобы быстрее вызвать деконструкторов. Включить.
+1

Это отличный ответ. Спасибо! – timhysniu

+0

Рад, что я мог помочь :) –