SobesLab логотип SobesLab

Ответ

Для профилирования PHP-кода используются как расширения, так и внешние сервисы. Одно из самых известных — Xdebug (включает профилировщик, который может записывать трассировку выполнения с замером времени и памяти). С помощью Xdebug профайла (в режиме profiler) можно получить файл cachegrind, который потом анализировать, например, утилитой KCacheGrind/QCacheGrind или веб-интерфейсами, видеть, какие функции сколько времени заняли, сколько раз вызывались. Другой инструмент — XHProf (разработан Facebook) — более лёгкий профилировщик, собирает агрегированные данные по времени выполнения функций, его форк UProfiler или продвинутый Tideways. Есть Blackfire — коммерческий сервис, очень удобный профилировщик с визуализацией, интегрируется через расширение. Для нагрузки/метрик можно применять APM (Application Performance Monitoring) инструменты: New Relic, Datadog, которые без прямого профилирования собирают статистику по транзакциям, запросам к БД. В своей практике я чаще использовал Xdebug/XHProf для детального профилирования кода во время оптимизации, а также тесты производительности (JMeter, ab) вместе с мониторингом профиля, чтобы понять узкие места.