Size: a a a

Ваdоо PHP Мееtuр

2020 May 13

DS

Dmitry Salnikov in Ваdоо PHP Мееtuр
xhprof упомянутый в начале беседы показывает результат для единичного прогона скрипта/реквеста. Хорошо что существует https://github.com/badoo/liveprof позволяющий получить результаты агрегированные по множеству прогонов.
источник

NK

Nikolay Krapivnyy in Ваdоо PHP Мееtuр
В догонку к дискуссии на PHP Russia 2020 — подборка статей и докладов Badoo о производительности PHP:

1. Об opensource-проекте LiveProf
https://habr.com/ru/company/badoo/blog/436364/
GitHub проекта https://github.com/badoo/liveprof

2. Пробуем preload (PHP 7.4) и RoadRunner.

Доклад: https://youtu.be/fR4k4Yn_b2k
Статья: https://habr.com/ru/company/badoo/blog/472528/

3. О производительности PHP и оптимизации.

Доклад: https://youtu.be/vF29LanRQv4
Статья: https://habr.com/ru/company/badoo/blog/430722/
источник
2020 May 14

KR

Konstantin Rekunov in Ваdоо PHP Мееtuр
Dmitry Salnikov
xhprof упомянутый в начале беседы показывает результат для единичного прогона скрипта/реквеста. Хорошо что существует https://github.com/badoo/liveprof позволяющий получить результаты агрегированные по множеству прогонов.
Можно без всяких лайвпрофов написать свой аггрегатор, ибо формат открытый, пишется за 1-2 часа. Мы так пошли.
источник

SP

Sergey Popov in Ваdоо PHP Мееtuр
Зачем тратить эти 1-2 часа, если есть готовый вариант?
источник

KR

Konstantin Rekunov in Ваdоо PHP Мееtuр
На тот момент его не было)
источник

SP

Sergey Popov in Ваdоо PHP Мееtuр
Была тонна разного-всякого для этого. Например, https://github.com/badoo/pinba2
источник

KR

Konstantin Rekunov in Ваdоо PHP Мееtuр
Мы из пачки xhprof делаем такой же xhprof файл который прекрасно смотрится через ту же веб морду. Никаких дополнительных инструментов.
источник

G

Grigory in Ваdоо PHP Мееtuр
Если смотреть через ту же морду, то не получится вывести дополительные статистические метрики - перцентили, средние, нимум, максимум. Как быстрое решение наверно хорошая идея, но морду желательно специальную иметь под это.
Кстати, если говорить про простой аггрегатор, то можно посмотреть на консольную версию liveprof тут https://github.com/badoo/xhprof_console - тут есть разные статистические метрики
источник
2020 May 24

AV

Artem Volt in Ваdоо PHP Мееtuр
Всем, привет!
Думаю, кто-нибудь собирал пинбу через докер.
https://github.com/badoo/pinba2
1. через docker-compose сбилдил контейнер и пробросил порты 3306/tcp и 3002/udp наружу
2. создал default tables в бд pinba
3. собрал модуль для пыхи
4. включил через ini_set:
ini_set('pinba.enabled', 1);
ini_set('pinba.server', 'localhost:3002');
5. Добавил таймер
$t = pinba_timer_start(array("group"=>"db", "server"=>"dbs2", "op_type"=>"select"));
//...some code
pinba_timer_stop($t);
6. через apache benchmark прогнал 1000 запросов.

В целом такой ведь порядок?
Почему-то данных новых не вижу.
источник

AP

Anton Povarov in Ваdоо PHP Мееtuр
Какие данные ты увидеть ожидаешь и в каком репорте (структуру можно сразу)
источник

P

Pavel in Ваdоо PHP Мееtuр
А PHP на хосте или в соседнем контейнере в compose? Если в контейнере, то udp порт не нужно наружу кидать. И в pinba.server прописать хостнейм по названию контейнера в compose.
источник

AV

Artem Volt in Ваdоо PHP Мееtuр
Anton Povarov
Какие данные ты увидеть ожидаешь и в каком репорте (структуру можно сразу)
я думал, что увижу нечто подобное
источник

AV

Artem Volt in Ваdоо PHP Мееtuр
Pavel
А PHP на хосте или в соседнем контейнере в compose? Если в контейнере, то udp порт не нужно наружу кидать. И в pinba.server прописать хостнейм по названию контейнера в compose.
php на хосте
источник

AV

Artem Volt in Ваdоо PHP Мееtuр
Я вроде ничего не путаю, пинба у нас идет как отдельный сервер, который у нас в контейнере. Далее для nginx, пыхи, для ноды и прочего мы ставим библиотеки и по udp отправляем дополнительные данные. В случае php, каждый процесс создает protobuf сообщение и отправляет данные на сервер pinba. Данные агрегируются по заданным маскам и добавляются в бд.
Если я не прав, поправьте - пойду дальше курить ману.
источник

S

Slach in Ваdоо PHP Мееtuр
Artem Volt
Я вроде ничего не путаю, пинба у нас идет как отдельный сервер, который у нас в контейнере. Далее для nginx, пыхи, для ноды и прочего мы ставим библиотеки и по udp отправляем дополнительные данные. В случае php, каждый процесс создает protobuf сообщение и отправляет данные на сервер pinba. Данные агрегируются по заданным маскам и добавляются в бд.
Если я не прав, поправьте - пойду дальше курить ману.
все правильно ты прав
источник

AV

Artem Volt in Ваdоо PHP Мееtuр
Slach
все правильно ты прав
Спасибо
источник

AP

Anton Povarov in Ваdоо PHP Мееtuр
вариантов по сути два
1. пакеты не доходят до пинбы (либо адреса указаны не те, либо iptables/docker network режет пакеты)
2. пакеты не подходят под отчет из которого селектим

судя по всему - у нас ситуация #1
источник

AP

Anton Povarov in Ваdоо PHP Мееtuр
сейчас подумаю как проще проверить это, пока проще tcpdump ничего не приходит в голову
источник

AV

Artem Volt in Ваdоо PHP Мееtuр
Anton Povarov
вариантов по сути два
1. пакеты не доходят до пинбы (либо адреса указаны не те, либо iptables/docker network режет пакеты)
2. пакеты не подходят под отчет из которого селектим

судя по всему - у нас ситуация #1
Спасибо за мысли. Да, сейчас хочу проверить, что пакеты точно доходят.
источник

AP

Anton Povarov in Ваdоо PHP Мееtuр
Изнутри конейнера, там где pinba вот так tcpdump -n -nn udp port 3002
источник