Как провести анализ времени выполнения веб приложения?

У существующего приложения для Facebook (проще говорят у сайта написанного на PHP), есть проблемы со скоростью загрузки. Хочет найти узкие места и понять, могу ли я их устранить потенциально это:
1. обращения к Facebook API
2. запросы к БД
3. выполнение php-скрипта

Firebug и иже с ним не подходят, так отображают время ответа целиком — оно и понятно на стороне клиента.
Не хочется по всему коду лазить и навешивать таймеры для засекания времени и городить велосипед для анализа. Может быть есть готовы средства, которые разворачиваются на стороне сервера и позволяют производить подобный анализ?
  • Вопрос задан
  • 3032 просмотра
Решения вопроса 1
pr0tect0r
@pr0tect0r
Для «извнутри» (производительность php скриптов):
  • xhprof
  • newrelic
  • xdebug

Для снаружи:
webpagetest.org — удобный профайлер загрузки страницы из разных мест, разными браузерами
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
FanKiLL
@FanKiLL
Я не пхп программер, но сделал бы так.
обернул бы каждую операцию, что хотим измерить в примерно такой код
$start = microtime(true);
 // Your code goes here.
$end = microtime(true);
 
echo 'Total script execution time: ', ($end - $start), '.';


вместо echo использовать какой-нибуть логгер. Вообщем обычный StopWatch.
Это если нужно быстрое решение, для более глубого анализа, наверняка есть хорошиие утилиты.
Ответ написан
@himik
если используете вас php-fpm, то там есть slow log чтоб долго не заморачиваться. ну и если используете фреймворк, то там как правило есть встроенный бенчмарк
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Судя по вопросу никаких фреймворков вы не используете, ибо обычно у них есть либо встроенные профайлеры (Symfony) либо как минимум сторонние решения.

Обращение к Facebook API на самом деле может быть узким местом, обычно выполнение запросов и исполнение PHP не настолько влияют как подключение к удаленному серверу.

Таймеры навешивать ненужно, хотя логи стоит при разработке делать. Есть варианты использовать PECL APD, который покажет детальную статистику исполнения всех функций. Так же хороший вариант использовать xdebug. Думаю последний вариант будет проще так как требует только включение профайлинга в php.ini.
Ответ написан
Вам нужно профилирование в xdebug. Только на боевом сервере не испытывайте, т.к. профилирование сильно подгружает систему.
Ответ написан
charliez
@charliez
Если есть root доступ в системе, то можно натравить на процесс системные средства отладки типа strace. Я например вылавливаю баги именно этим способом в скриптах клиентов, жалующихся на непонятные тормоза в работе сайтов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы