Профайлинг с помощью xdebug
Иногда бывает, что ваш сайт тормозит, причём хрен разбери отчего (тяжкое "наследство", раздолбайство автора плугина для Вордпресса, или же последствия косяка проявились лишь через время после того, как сайт был запущен). Определиться с тем, какие куски кода сколько времени жрут, поможет профайлинг. Для профайлинга я предлагаю использовать xdebug.
Естественно, перво-наперво его надо установить. Рекомендации по установке зависят от ОС вашего сервера, нет смысла приводить их, just google it. В Ubuntu-подобных дистрах достаточно для установки написать: apt-get install xdebug К сожалению, мне повезло не столь сильно, и репозитории yum'а в моей CentOS о таком пакете не слыхали. Потыкавшись в вебе, я пришёл к выводу, что скомпилить из исходников будет быстрее (единственный способ, который работает ВСЕГДА). Вот инструкция, по которой я это делал. Так или иначе, когда вы установили xdebug, нужно кое-что дописать в php.ini, который обычно лежит здесь: /etc/php.ini В нём я добавил следующую строчку: Код:
extension=xdebug.so Код:
service httpd restart Код:
service apache2 restart PHP код:
Открываем снова php.ini и добавляем строку: Код:
xdebug.profiler_output_dir = "/var/log/xdebugprofiler" Далее надо активировать сам профайлинг. Вообще, есть такой параметр: Код:
xdebug.profiler_enable Вместо него в php.ini пишем вот это: Код:
xdebug.profiler_enable_trigger = 1 Ну, давайте приступим. Проще всего передать этот параметр через GET: www.mysite.ru/test.php?XDEBUG_PROFILE. После того, как страница сгенерируется, отправляйтесь в папку, указанную в xdebug.profiler_output_dir и забирайте оттуда только что созданный файл к себе на рабочую машину. Далее вам понадобится программа для анализа, ведь отчёт не очень человекопонятен. Для Винды есть программа WinCacheGrind. Делаете File - Open на ваш отчёт и опа! Видно, вызов какой функции сколько времени занял. Так вы сможете понять, где находится "bottle neck" и исправить его. Не забудьте отключить профайлер после того, как всё сделаете, нехрен ему висеть включённым! Код:
xdebug.profiler_enable_trigger = 0 |
Ответ: Профайлинг с помощью xdebug
Глянь кстати ещё New Relic. Говорят охрененная штука..
|
Ответ: Профайлинг с помощью xdebug
Видел, в ролике много себя нахваливают в общих чертах, но никакой конкретики. Насторожило, что в ролике показано, что оно работает с PHP, Ruby, .NET и т.д. (вспомнили всё, на чём можно писать сайты), т.е. оно может в профилирование всего перечисленного? Указать пальцем на то, какая конкретно часть кода тормозит? Если нет, то, ну, скорость загрузки сайта я и сам могу знать, например. Т.е. конечно прикольно видеть это в виде графика, но всё же это не дебаггер.
|
Ответ: Профайлинг с помощью xdebug
Цитата:
|
Часовой пояс GMT +4, время: 04:17. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot