3 второй раз к первому байту - PullRequest
0 голосов
/ 24 декабря 2018

Я поддерживаю приложение электронной коммерции на PHP / SQL, и клиент звонил по поводу того, что его ttfb постоянно увеличивается почти до 3 секунд.

Что я пробовал:

  1. Создание страницы test.php, которая просто выводит какой-то текст, дает 30 мс ttfb.
  2. Пройденный назад в истории фиксации и проверил, могли ли какие-либо недавние изменения быть виновником.

Загрузка тестовой страницы быстро заставляет меня поверить, что это какой-то запрос или логика, которая запускается на каждой другой странице сайта (аутентификация?), Но ни один из недавних коммитов, так как переход в ttfb не имел никакого эффекта.Как это могло произойти случайно?

1 Ответ

0 голосов
/ 24 декабря 2018

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

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

То, что вы хотите сделать, это попытаться имитировать на локальных или промежуточных серверах точные настройки, такие как на производстве, настройки сервера, записи в БД и т. Д. А затем просто измерить время выполнения, начиная с первой строки в индексе.php, для ключевой части приложения, например db read / write class, http request class.А затем запишите данные в некоторую базу данных, чтобы вы могли сгенерировать отчет по профилированию.

Таким образом, для каждого маршрута и / или операции вы хотели бы видеть, сколько запросов к базе данных было сделано, и сколько времени они потребовали для выполнения, сколько вызовов API было сделано (если это так) искоро.В конце цель состоит в том, чтобы иметь хорошее представление о том, сколько времени занимает часть потока выполнения.

...