3 второй раз к первому байту
Я поддерживаю приложение электронной коммерции на PHP/SQL, и клиент звонил по поводу того, что его ttfb постоянно увеличивается почти до 3 секунд.
Что я пробовал:
- Создание страницы test.php, которая просто выводит какой-то текст, дает 30 мс ttfb.
- Вернулся в историю коммитов и проверил, могли ли последние изменения быть виновником.
Загрузка тестовой страницы быстро заставляет меня поверить, что это какой-то запрос или логика, выполняемая на каждой другой странице сайта (аутентификация?), Но ни один из недавних коммитов, так как переход в ttfb не имел никакого эффекта. Как это могло произойти случайно?
1 ответ
На самом деле это проблема оптимизации производительности, которую можно решить с помощью профилирования.
Для профилирования вы можете использовать xdebug или, возможно, другие инструменты, которые существуют, но лично я не нашел полезного решения, когда сталкивался с подобной ситуацией, поэтому я просто создал простой модуль профилирования, адаптированный к приложению.
То, что вы хотите сделать, это попытаться имитировать на локальных или промежуточных серверах точные настройки, такие как на производстве, настройках сервера, записях в БД и т. Д. А затем просто измерить время выполнения, начиная с первой строки в index.php и до ключевой части приложение, например, db класс чтения / записи, http запрос класса. А затем запишите данные в некоторую базу данных, чтобы вы могли сгенерировать отчет по профилированию.
Таким образом, для каждого маршрута и / или операции вы хотели бы видеть, сколько запросов к базе данных было сделано, и сколько времени они потребовали для выполнения, сколько вызовов API было сделано (если это так) и так далее. В конце цель состоит в том, чтобы иметь хорошее представление о том, сколько времени занимает часть потока выполнения.