Установка Blackfire в Local Lightning

Прикрутить профилировщик PHP кода Blackfire к Local Lightning не составляет особого труда, а вот профита от этого вагон и маленькая тележка.

Конфигурация репозитория

Blackfire использует свой собственный Debian репозиторий для распространения пакетов. Он совместим с большинством Debian подобных дистрибутивов, таких как: Ubuntu, Kubuntu или Linux Mint.

Регистрируем ключ:

wget -q -O - https://packages.blackfire.io/gpg.key | sudo apt-key add -

Добавляем репозиторий:

echo "deb http://packages.blackfire.io/debian any main" | sudo tee /etc/apt/sources.list.d/blackfire.list

Обновляем список пакетов:

sudo apt update

Установка пакетов

Устанавливаем пакет blackfire-agent:

sudo apt install blackfire-agent

Настройка агента

Конфигурируем локальный агент, указывая ему свои персональные ключи из личного кабинета:

sudo blackfire-agent --register --server-id=<server-id> --server-token=<servcer-token>

Перезапускаем сервис:

sudo /etc/init.d/blackfire-agent restart

После установки локального агента в системе появится новый сервис /etc/init.d/blackfire-agent, который вы сможете включать, выключать и перезапускать. После любого изменения конфигурации агента — сервис необходимо перезапускать.

Если у вас, вдруг, что-то пошло не так, то первым делом проверьте лог, который расположен по адресу: /var/log/blackfire/agent.log.

Установка PHP расширения

Устанавливаем расширение blackfire-php, которое ребята из Blackfire почему-то зовут PHP Probe. Запускаем Local, нажимаем правой клавишей на нужном сайте и выбираем «Open site shell».

В появившемся терминале вводим команду для поиска папки с расширениями:

php -i | grep 'extension_dir'

В ответ мы получаем путь, по которому нам нужно положить расширение blackfire-php:

extension_dir => /home/vsts/work/_temp/local-lightning-php/php-7.3.5/build/lib/php/extensions/no-debug-non-zts-20180731 => /home/vsts/work/_temp/local-lightning-php/php-7.3.5/build/lib/php/extensions/no-debug-non-zts-20180731

Скачиваем расширение в данную папку:

wget -c https://packages.blackfire.io/binaries/blackfire-php/1.29.6/blackfire-php-linux_amd64-php-74.so

Открываем php.ini для выбранного сайта (у меня это файл по пути /home/mihdan/www/kobzarev.test/conf/php/php.ini.hbs) и вписываем туда путь к расширению blackfire-php:

[blackfire]
extension=/opt/blackfire/blackfire.so
blackfire.agent_socket = unix:///var/run/blackfire/agent.sock
blackfire.agent_timeout = 0.25

При этом строки, связанные с xdebug лучше закомментировать:

;[xdebug]
;{{#if os.windows}}
;zend_extension = php_xdebug.dll
;{{else}}
;zend_extension = {{extensions.xdebug}}
;{{/if}}

;xdebug.remote_enable=1
;xdebug.remote_connect_back=Off
;xdebug.remote_port="9000"
;xdebug.profiler_enable=0

Выключаем сайт, закрываем приложение, чтобы изменения вступили в силу.

PHP крашится, если включено одно из расширений: XHProf, Pinba, или Suhosin. Поэтому лучше их отключить как и XDebug, чтобы избежать непредвиденных ошибок в поведении.

Установка браузерного расширения

Чтобы запускать профилирование через браузер, если у вас веб-приложение, можно использовать браузерное расширение под Chrome или Firefox.

Скачиваем и устанавливаем его и указываем свои реквизиты доступа из личного кабинета:

blackfire config --client-id=<client-id> --client-token=<client-token>

Профилирование

Открываем Local, стартуем нужный сайт, переходим в браузер, нажимаем кнопку Blackfire -> Profile!

Запуск профилирования
Результат профилирования

Источник: https://www.kobzarev.com/linux/blackfire-local-lightning/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: