Отслеживаем производительность работы сайта с помощью трассировщика strace

Сайт работает на хостинге. Переводим его в режим PHP CGI, выбираем версию PHP, например PHP 7.2

Чтобы исключить попадание остальных процессов, выбираем самую неиспользуемую версию PHP.

Далее в консоли запускаем поиск процесса и записываем его дамп в файл:

for i in `seq 1 1000`; do strace -T -tt  -o site.trace -p `ps ax | grep php72 | grep -v grep | head -n 1 | awk '{print $1}'`; done

Пока работает цикл, открываем в браузере страницу сайта, который тормозит. В консоли увидим, что произошёл attach к новому процессу.

После того как страница загрузится, процесс завршится.

Анализируем дамп трассировщика site.trace любой утилитой — less, more. Смотрим отметки времени и какие системные вызовы выполнялись. Находим причину медленной работы. Часто — это подключение сайта к какому-то внешнему сервису, который перестал работать. Дальше дело техники — понять, что это за сервис, например по IP-адресу найти его в google, найти доменное имя сервиса, выполнить поиск по доменному имени в конфигах сайта, внести изменения в код сайта или если есть возможность отключить модуль. Проверить скорость загрузки страницы.

Добавить комментарий