Выбор ответа Senior Производительность: OPcache и FPM обновлено

realpath cache и автозагрузка

Вопрос

Профилирование показывает много системных вызовов stat и lstat на каждом запросе Symfony-приложения. Что проверить в первую очередь?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: OPcache без проверки времени, classmap и realpathcachesize. При каждом include PHP разрешает путь к файлу и проверяет его время изменения.

Варианты ответа

  1. OPcache без проверки времени, classmap и realpath_cache_sizeправильный ответ
  2. Размер memory_limit: при нехватке PHP перечитывает файлы
  3. Число воркеров pm.max_children: каждый делает свои stat
  4. Версию nginx и его open_file_cache для PHP-файлов

Разбор

При каждом include PHP разрешает путь к файлу и проверяет его время изменения. Кеш реальных путей (realpath_cache_size, по умолчанию 4 МБ) и OPcache без проверки времени убирают большую часть обращений к файловой системе, а classmap-автозагрузчик (--classmap-authoritative) избавляет от поиска файлов по правилам PSR-4. memory_limit, число воркеров и nginx на эти вызовы не влияют.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.