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