При разработке каждого backend приложения рано или поздно встает вопрос об измерении производительности системы и поиска «узких» мест. Для этой цели мы используем Pinba.
Для тех, кто не знаком с этим инструментом, я коротко расскажу о возможностях Pinba и о том, какие задачи мы решаем с её помощью. Основной акцент доклада будет сделан не на внутреннем устройстве Pinba, процессе установки и настройки — всё это есть в документации. Гораздо полезнее на реальных примерах показать, что и как мы измеряем и как агрегируем данные для построения отчетов в режиме реального времени.
Основные аспекты доклада:
- измерение производительности php скриптов;
- измерение времени обращений к внешним сервисам;
- измерение «хитрейта» кэша;
- измерение производительности обработки очередей;
- построение распределений и использование перцентилей.
Я расскажу о том, как использовать Pinba в связке с Nginx и делать различные агрегации в зависимости от параметров URI.
Большинство примеров будет основано на взаимодействии Pinba с PHP. Но сейчас есть плагины, позволяющие отправлять данные в Pinba из программ на различных языках, методология при этом практически не меняется.
2. Badoo
● ~300 000 000 зарегистрированных пользователей
● ~70K rps в пике
● PHP, MySQL, C/C++, Golang, Tarantool etc.
3. PHP Is Not a Bottleneck Anymore
Авторы: Андрей Нигматулин, Антон Довгаль
• https://habrahabr.ru/company/badoo/blog/149695/ (Максим Матюхин, 2012 год)
• http://pinba.org/ (https://github.com/tony2001/pinba_engine/wiki ) Официальная документация
• https://habrahabr.ru/post/183104/ Intaro Pinboard
• https://habrahabr.ru/post/129042/ Мониторим PHP в реальном времени
• Написана на С (engine и php-extension)
• UDP
• MySQL engine
• НЕ является хранилищем данных!!!
• Nginx плагин (плагины для многих языков: Go, Java, Python, Ruby, etc)
6. Pinba примеры использования
Время запросов к внешним сервисам
Memcache get for memcache1.mlan:11211
• MAX 55272,258 req / sec
• AVG 29513,147 req / sec
• MIN 7978,757 req /sec
15. Javascript is Not a Bottleneck Anymore
• https://tech.badoo.com/presentation/123/realtime-statistika-skorosti-prilogenij/ Павел Довбуш о Jinba
• https://github.com/dpp-name/jinba Jinba
Pinba для Jinba
• tagN_info — отчеты по многим тегам
• Перцентили
• Гистограммы
• Фильтрация по тегам реквеста