Blackfire: Как работает анализ скорости

Для глубокого анализа «почему все не так» существует множество инструментов. Попробуем использовать новенький анализатор скорости PHP — Blackfire (выпуск от декабря 2014). Самое сложное в нем — поставить на хостинг (заметьте, вам нужно будет и клиент, и расширение для php ставить аккуратно и внимательно следуя инструкции. На виртуальном хостинге это вопрос, а на выделенном — все получается достаточно легко.

После этого мы можем или через расширение к хрому, или через консоль запросить урл сайта, подозреваемый в низкой скорости. Результатом будет интереснейший граф выполнения… Дальше подробнее на примерах и как все работает)


на сложном сайте все работает


граф выполнения

Простейшая легкая страница

Как мы видим — сама первичная загрузка ПХП скрипта — это достаточно долго на нашем тестовом сервере) поэтому куда бы мы потом не усложняли — вот наш нижний лимит(

simplest

Простейшая тяжелая страница

Запустим вычисление факториала — чтобы надежно загрузить сервер, но при этом не усложнять схему. Так же надежно с ней зависает собственно лог, даже на факториале сотни, не то что запланированного миллиона) Из консоли выполнение завершается — но графа все равно нет.

factorial

Маленькие штучки

Легко сломать просто добавив «обрыв»

blackfire curl http://my_server.page


и вот мы его поломали, теперь ждем пока загрузится

Сравнение скриптов

Увеличим цель факториала, но уберем вывод… Мы можем увидеть что нагрузка на процессор стала больше, а вот операции «ввода и вывода» меньше. Удельный вес выполнения вырос. Заметим — что дальнейшее внесение функций и объектов на порядок усложняет выполнение (тут до двух секунд, дальше мы увидим и 30 и 40). Профилирование еще дольше длится чем выполнение — так что запускаем заранее допуская что раз в 10 загрузка будет дольше результатов чем генерация самой страницы.

big_cpu

По-разному написанная функция

bad_cpu

Указатель — еще хуже)

bad_cpu2

Финальный тест

bad_tests

О чем говорит график? полный путь загрузок всех функций и объекта, при чем мы сразу видим 4 тест самый тяжелый по выполнению) а самая легкая функция — номер 3 — вообще не в графике, так что можно сделать вывод о показе только нагруженных частей в приоритете нагрузки)

Оставить комментарий

XHTML: Вы можете использовать такие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">