Стек WAMP / Silverstripe, высокий TTFB, но быстрое выполнение PHP? Где я могу найти ответы?

Мой рабочий сервер - это Windows Server 2012 R2, Apache 2.4, PHP 5.6 и MariaDB (не уверен в версии, возможно, не имеет значения). У меня есть настроенный сайт, работающий на Silverstripe 3.5.

В последнее время я получаю нелепые TTFB с определенными действиями, в первую очередь с входом в систему (более 30 секунд) или иногда случайным образом при просмотре серверной части. Любопытно, что этого не происходит на нашем сервере разработки, который настроен аналогично, и наш ИТ-отдел собирается залить httpd.conf и php. ini , чтобы увидеть, есть ли какие-либо различия, которые могут быть проблемой.

Я включил расширение Zend OpCache в надежде, что оно поможет, но я не вижу никаких значительных улучшений.

Я установил XDebug и запускается профилирование во время входа в систему (путем добавления скрытого поля формы с именем XDEBUG_PROFILE через инспектор DOM), но вывод при просмотре в WinCachegrind говорит, что выполнение PHP в совокупности заняло не более 5 секунд - то есть общее совокупное время в main. php было 4.x секунды. Кажется, нет заметных узких мест в логике фреймворка или доступе к базе данных.

httpd.exe занимает твердые 14% моего ЦП на время выполнения запроса. Просмотр журналов с помощью Powershell gci -Wait показывает, что запрос не зарегистрирован в доступе . log до тех пор, пока не будет отправлен ответ (не уверен, что нормальное поведение) и не появятся ошибки.

Я не понимаю, почему Apache так долго обрабатывает запрос, который, по утверждениям PHP, принимает только 4 секунды для выполнения логики. Хотя потенциальные решения могут быть оценены, мне бы очень хотелось знать, где еще я могу посмотреть с точки зрения диагностики, чтобы выяснить, что вызывает замедление Apache, например, доступ к файлам, отслеживание выполнения и т. Д.? Я не имею ни малейшего понятия, с чего начать поиск.

0
задан 20 September 2018 в 23:49
1 ответ

База данных была , а не узким местом. Как ни странно, это был кеш - это известная проблема, из-за которой кеши на основе Zend_Cache_Backend_File работают отвратительно медленно, если на сайте много данных, шаблонов и изображений. кешируется . Конечно же, в моей папке silverstripe-cache на сервере было более 5000 файлов.

Добавление следующей строки в ./ mysite / _config.php для отключения кеширования привело к немедленным, ошеломляющим улучшениям (35 второй TTFB при входе в систему меньше 0,5 секунды!):

SS_Cache :: set_cache_lifetime ('default', -1, 100);

Однако это временное исправление. Мы рассмотрим возможность реализации более постоянного, более практичного решения для обработки кеширования, такого как использование RAM-диска в сочетании с серверной частью файловой системы или использование серверной части, которая использует пулы памяти, такие как XCache или Memcached, а также работать над переходом на Silverstripe 4.x, который сбрасывает Zend_Cache в пользу symfony / cache .

Но поскольку мой офис любит позволять бюрократии мешать всему ... может быть немного до того, как это произойдет.

0
ответ дан 24 November 2019 в 01:57

Теги

Похожие вопросы