PHP Profiler для живой системы поверх Apache - PullRequest
6 голосов
/ 09 июня 2009

У меня есть веб-сайт PHP на сервере Apache, и я хотел бы знать, есть ли инструменты и другие способы, которыми я могу профилировать это, чтобы найти узкие места в коде. Мне нужно знать, какие функции долго обрабатываются и т. Д.

Что-то вроде gprof, кроме PHP на живом сервере apache.

Каковы другие способы поиска узких мест в системе PHP.

Ответы [ 9 ]

8 голосов
/ 09 июня 2009

Вы можете использовать xdebug - после установки вы можете запустить профилирование запросов различными способами, и вы получите профиль формата valgrind для каждого запроса. Загрузите это в WinCacheGrind , KCacheGrind или аналогичное и разверните, чтобы найти, где все время тратится!

alt text

4 голосов
/ 09 июня 2009

Попробуйте XDebug (http://www.xdebug.org/), вы можете запустить его с параметром get во время сеанса отладки. Это создаст cachegrind-файлы, которые вы можете проверить в KCacheGrind или WinCacheGrind (это намного лучше) ...

3 голосов
/ 18 декабря 2010

XHProf был разработан для этого варианта использования.

XHProf (открытая версия от Facebook в 2009 году) поддерживает Facebook XHProfLive - систему мониторинга производительности в режиме реального времени, которая предоставляет информацию об уровне функций с производственных уровней.

Фрагмент из документа XHProf:

XHProf - это легкий инструментальный профилировщик. В течение фаза сбора данных, она сохраняет отслеживание количества звонков и включительно метрики для дуг в динамическом вызов программы. Вычисляет эксклюзивные метрики в этап отчетности / постобработки. XHProf выполняет рекурсивные функции обнаружение циклов в графе вызовов в само время сбора данных и избегая циклов, давая уникальные глубинные имена для рекурсивные вызовы.

легкий характер XHProf и возможности агрегации делают это хорошо подходит для сбора "функционального уровня" статистика производительности от производства окружающая среда.

С уважением, Каннан Мутуккарупан

1 голос
/ 20 октября 2011

Позвольте мне также упомянуть Пинба
На мой взгляд, он больше подходит для настройки нескольких серверов, чем для одного сервера, но в случае роста вашего проекта.

1 голос
/ 19 ноября 2010

dtrace имеет низкие накладные расходы

На самом деле dtrace имеет почти нулевые издержки, если вы не включите тысячи пробников думаю, что это также доступно на BSD's

1 голос
/ 10 июня 2009

если у вас есть очень целевая область, на которую вы можете посмотреть, вы можете попробовать разбросать ее по своему коду:

$f_timeStart=microtime(true);
$f_timeLast=$f_timeStart;


error_log(sprintf("%'08.5f",(microtime(true)-$f_timeLast)).' - '.sprintf("%'05.2f",(microtime(true)-$f_timeStart)).' secs - '.'01 before xyz()'."\n", 3, '/var/tmp/my-errors.log');
$f_timeLast=microtime(true);
xyz();
error_log(sprintf("%'08.5f",(microtime(true)-$f_timeLast)).' - '.sprintf("%'05.2f",(microtime(true)-$f_timeStart)).' secs - '.'01 after xyz()'."\n", 3, '/var/tmp/my-errors.log');
$f_timeLast=microtime(true);
0 голосов
/ 23 декабря 2009

Если вы работаете на OpenSolaris, рассмотрите dtrace. Вероятно, самое большое преимущество заключается в том, что вы также можете исследовать другие уровни, такие как Apache, Mysql. У dtrace низкие издержки, и вы можете выборочно включать только те пробники, которые хотите отслеживать.

0 голосов
/ 10 июня 2009

Я бы посоветовал не создавать свой собственный профилировщик. В свободном доступе есть несколько отличных профилировщиков, которые дадут вам подробные сведения и простоту использования. Я думаю, что ваши лучшие временные вложения в следующей комбинации. Мы используем это в компании, занимающейся веб-разработкой, в которой я работаю, и очень довольны:

  1. Zend Server стек php:
    Вы можете использовать бесплатную Community Edition и выбрать, какие части стека вы хотите установить. Мы установили только часть PHP и полагаемся на Apache и MySQL из дистрибутива Linux. Zend Server предоставляет расширение Debugger, оптимизатор кода (для небольшого увеличения скорости), кэш байт-кода (для значительного увеличения скорости) и приятный графический интерфейс для управления настройками PHP. Коммерческая версия предоставляет гораздо больше. Установка в Linux проста с помощью пакетов RPM или DEB.

  2. Чтобы использовать расширение отладчика, вам нужна IDE:
    Установите Zend Studio , которая является отличной PHP IDE (проверьте страницу возможностей) и делает отладку и профилирование очень простыми. Нет необходимости создавать файлы cachegrind или другие многошаговые процессы, но просто нажмите «Профиль» на панели инструментов в Firefox, и Studio начнет профилирование этой страницы. Детали и простота использования огромны.

Может быть, я звучу как продавец Zend, и, возможно, это звучит больше, чем нужно, но я всего лишь разработчик PHP, который очень доволен инструментами, которые он использует. Я думаю, что хорошо потрачено время, чтобы начать использовать Studio, но комбинация делает его великолепным, и Server даже немного ускорит работу вашего живого сервера. На мой взгляд, это комбо просто лучшая среда разработки PHP, доступная на данный момент. Проверьте демо-видео . Также есть один из них по профилированию.

0 голосов
/ 09 июня 2009

Вы можете использовать phpdebug для этой работы. Это расширение php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...