16
Pinba статистика в режиме реального времени Довгаль Антон, Badoo.com [email protected]

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

  • Upload
    tola

  • View
    107

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Pinbaстатистика в режиме

реального времени

Довгаль Антон, Badoo.com [email protected]

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

Немного о себе

• Разработчик PHP с 2003-го года• Автор OCI8, PECL/haru, PECL/memcache,

PECL/libevent, PECL/memtrack, PECL/rar, PECL/sphinx и др.

• С 2007-го года работаю в Badoo.com

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

Что это?

• Pinba — это демон для сбора данных о выполнении скриптов на рабочих серверах

• Pinba — это custom storage engine для MySQL

• Pinba — это «попугай лори» на языке австралийских аборигенов

• Pinba — это PHP Is Not a Bottleneck Anymore

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

Зачем это?

• Большой сервис требует постоянного контроля

• Много серверов, много кода, много людей • Xdebug и ему подобные — для дебага, не

для продакшена• Обработка данных на лету• Красивые графики радуют менеджеров

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

Как это работает?

• Каждый скрипт шлет пакет с данными• Это происходит после окончания

выполнения запроса• Для отсылки пакета используется UDP• Сервер хранит пул из последних N пакетов,

т.е. данные по последним N запросам• Для пользователя всё выглядит, как

обычная база MySQL

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

Данные

• домен• имя физического сервера• имя скрипта• количество обработанных запросов• объем вывода скрипта• пиковое количество выделенной памяти• время выполнения скрипта• использованные системные ресурсы

(user/system)• таймеры

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

Таймеры

• Одна из главных причин создания Pinba• Позволяют засекать время исполнения

произвольных частей кода• Для группировки и суммирования

таймеров используются таги вида «имя» => «значение».

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

Примеры таймеров

$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);

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

Интерфейс к данным

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

тагов, «один ко многим»

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

Отчеты

• Запросы по сырым данным — это медленно• Отчеты обновляются на лету• Фиксированные отчеты:

– с группировкой по скрипту– по серверу– по домену– по серверу и скрипту– по домену и скрипту– по домену и серверу– по домену, серверу и скрипту

• Отчеты по произвольным тагам

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

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

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

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

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

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

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

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

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

Есть чо?

Вопросы?

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

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