1 / 16

Pinba статистика в режиме реального времени

Pinba статистика в режиме реального времени. Довгаль Антон, Badoo.com tony@daylessday.org. Немного о себе. Разработчик PHP с 2003-го года Автор OCI8, PECL/haru, PECL/memcache, PECL/libevent, PECL/memtrack, PECL/rar, PECL/sphinx и др. С 2007-го года работаю в Badoo.com. Что это?.

tola
Download Presentation

Pinba статистика в режиме реального времени

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pinbaстатистика в режиме реального времени Довгаль Антон, Badoo.com tony@daylessday.org

  2. Немного о себе • Разработчик PHP с 2003-го года • Автор OCI8, PECL/haru, PECL/memcache, PECL/libevent, PECL/memtrack, PECL/rar, PECL/sphinx и др. • С 2007-го года работаю в Badoo.com

  3. Что это? • Pinba — это демон для сбора данных о выполнении скриптов на рабочих серверах • Pinba — это custom storage engine для MySQL • Pinba — это «попугай лори» на языке австралийских аборигенов • Pinba — это PHP Is Not a Bottleneck Anymore

  4. Зачем это? • Большой сервис требует постоянного контроля • Много серверов, много кода, много людей • Xdebug и ему подобные — для дебага, не для продакшена • Обработка данных на лету • Красивые графики радуют менеджеров

  5. Как это работает? • Каждый скрипт шлет пакет с данными • Это происходит после окончания выполнения запроса • Для отсылки пакета используется UDP • Сервер хранит пул из последних N пакетов, т.е. данные по последним N запросам • Для пользователя всё выглядит, как обычная база MySQL

  6. Данные • домен • имя физического сервера • имя скрипта • количество обработанных запросов • объем вывода скрипта • пиковое количество выделенной памяти • время выполнения скрипта • использованные системные ресурсы (user/system)‏ • таймеры

  7. Таймеры • Одна из главных причин создания Pinba • Позволяют засекать время исполнения произвольных частей кода • Для группировки и суммирования таймеров используются таги вида «имя» => «значение».

  8. Примеры таймеров $timer1 = pinba_timer_start(array("db"=>$db_server, "op"=>"connect")); $c = mysql_connect($db_server, $user, $password); pinba_timer_stop($timer1); $timer2 = pinba_timer_start(array("db"=>$db_server, "op"=>"select", "query"=>"users")); $r = mysql_query("SELECT .. FROM User ..", $c); if (!$r) { pinba_timer_tags_merge($timer2, array("result"=>"failure")); } pinba_timer_stop($timer2);

  9. Интерфейс к данным • «Виртуальные» таблицы с сырыми данными: • request — данные запроса • timer — значения таймеров • tag — имена тагов • timertag — таймеры <-> таги + значения тагов, «один ко многим»

  10. Отчеты • Запросы по сырым данным — это медленно • Отчеты обновляются на лету • Фиксированные отчеты: • с группировкой по скрипту • по серверу • по домену • по серверу и скрипту • по домену и скрипту • по домену и серверу • по домену, серверу и скрипту • Отчеты по произвольным тагам

  11. Пример из жизни Обратный пик на графике общего числа запросов в секунду

  12. Пример из жизни Пики на графике среднего времени выполнения скриптов

  13. Пример из жизни Одновременное замедление всех скриптов

  14. Пример из жизни Причина — падение одной из баз

  15. Есть чо? Вопросы?

  16. http://pinba.org Спасибо!

More Related