Параметры производительности Zend OPcache по сравнению с настройками по умолчанию


Насколько я понимаю эти настройки:

opcache.validate_timestamps=0
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=3907
opcache.blacklist_filename=/blacklisted_files

Должно повысить производительность (согласно ссылкам: 1, 2 и 3). Я на самом деле не уверен в последних 2, и в моем случае значение параметра "internet_strings_buffer" "4" может никогда не заполняться (поэтому не дает лучших результатов), но "validate_timestamps" должно удалить накладные расходы функции stat() и, следовательно, повысить производительность, но, согласно моим тестам с JMeter, я не могу это подтвердить. Каждый настройка отдельно хуже, чем настройки по умолчанию.

Я понимаю, что "настройки производительности" могут не сильно улучшиться, но я думаю, что они не должны работать хуже (разница составляет около +2 мс для каждого запроса).

Вопрос в следующем: Почему настройки по умолчанию лучше, чем производительность/рекомендуемые настройки?

Также лучше ли OPCACHE обрабатывает перезапись/удаление/поиск меньшего объема памяти, чем больший (речь идет о настройке "opcache.memory_consumption")?

Author: R.P, 2014-12-04

1 answers

Варианты 2 и 3 лишь косвенно влияют на производительность, поскольку они связаны с емкостью кэша кода операции. Если ваше текущее использование соответствует значениям по умолчанию, вы не увидите никакой существенной разницы, кроме небольшого увеличения системных накладных расходов при использовании Opcache. Конечно, вы получите выгоду, если текущее использование не соответствует , потому что кэш будет иметь большую емкость, и вы получите меньше пропусков кэша.

Вариант 4 относится к определению шаблонов для PHP-скрипта имена файлов, которые являются изменчивыми и поэтому не должны кэшироваться. Это особенно важно, если вы отключили проверку временных меток, так как такие изменения не будут обнаружены Opcache.

Опция 1 удаляет дополнительные вызовы stat(), которые может проверить strace процесса PHP. С современными процессорами ядро Linux кэширует индексы довольно эффективно, поэтому это экономит только субсекунду , если узел находится в кэше VFAT. Вам нужно будет довольно хорошо построить тест времени, чтобы измерить это разница.

У Opcache очень плохая стратегия повторного использования: это не беспокоит. Кэш медленно заполняется, а когда он заполняется, он полностью очищается и перестраивается с нуля.

 4
Author: TerryE, 2014-12-07 11:45:03