Время загрузки PHP-файла, возможно, связано с NFS?

Время загрузки PHP-файла, возможно, связано с NFS?

Проблема

Я пытаюсь диагностировать проблему производительности на сайте Drupal, который я разрабатываю. Утром, когда на сайте нет трафика (даже cron не запущен) более 8 часов, загрузка домашней страницы занимает около 3,5 секунд. Перезагрузка страницы занимает ожидаемые 250 мс.

Это веб-сервер разработки, на котором установлена ​​довольно старая версия PHP (5.3.3).Все файлы статически смонтированы по NFS(что, по моему мнению, является основной причиной, подробнее об этом ниже).

Для диагностики я установилXHProfна этом сервере разработки и включил модуль Drupal, который профилирует загрузки страниц и отображает данные профилирования в удобной для сортировки таблице. Для тех, кто не знаком с XHProf, он предоставляет данные по каждой вызванной функции и такие вещи, как общее затраченное время, использование памяти и вызовы этой функции.

Мои выводы

При первом «медленном» срабатывании функция PHP file_existsзаняла1400мсиз 82 вызовов, что составляет примерно 43% от общего времени выполнения. При последующей загрузке страницы та же функция file_existsбыла снова вызвана 82 раза, но на этот раз она была резко сокращена до всего лишь3мсчто составляет всего 1% от общего времени выполнения.

Я также посмотрел на файл, загрузка которого в память заняла у PHP больше всего времени (я полагаю, что именно это load::и означает префикс в имени функции). Этот файл шаблона PHP занял колоссальное время42мсдля загрузки в первый раз, и только3мспри последующей перезагрузке!

Что я подозреваю

Мне ясно, что где-то происходит какое-то кэширование, просто я пока не знаю, где именно. Документация PHP дляФайл существуетупомяните, что вывод этой функции кэшируется. Затем я обнаружил, что могуконтролировать размер этого кэшаи, вероятно, его следует увеличить с 16 КБ по умолчанию до чего-то более подходящего для Drupal (который загружает тонны относительных файлов).

Однако, хотя я и думаю, что это сократит время, затрачиваемое на file_exists, я не уверен, что это повлияет на время, которое фактически занимает PHPзагрузкафайл (о котором load::я упоминал ранее) и увеличение этого значения, похоже, просто скрывает основные проблемы с производительностью файловой системы.

Вопросы

  1. Есть ли ветераны XHProf или PHP, которые могут подтвердить, realpath_cacheоказало ли увеличение PHP какое-либо влияние на время, сообщаемое load::XHProf?
  2. О каких базовых механизмах кэширования в Linux, которые могут оказать влияние, мне следует знать?
  3. То же, что и выше, но для NFS?

Связанный контент