Upload
tola
View
127
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
Немного о себе
• Разработчик PHP с 2003-го года• Автор OCI8, PECL/haru, PECL/memcache,
PECL/libevent, PECL/memtrack, PECL/rar, PECL/sphinx и др.
• С 2007-го года работаю в Badoo.com
Что это?
• Pinba — это демон для сбора данных о выполнении скриптов на рабочих серверах
• Pinba — это custom storage engine для MySQL
• Pinba — это «попугай лори» на языке австралийских аборигенов
• Pinba — это PHP Is Not a Bottleneck Anymore
Зачем это?
• Большой сервис требует постоянного контроля
• Много серверов, много кода, много людей • Xdebug и ему подобные — для дебага, не
для продакшена• Обработка данных на лету• Красивые графики радуют менеджеров
Как это работает?
• Каждый скрипт шлет пакет с данными• Это происходит после окончания
выполнения запроса• Для отсылки пакета используется UDP• Сервер хранит пул из последних N пакетов,
т.е. данные по последним N запросам• Для пользователя всё выглядит, как
обычная база MySQL
Данные
• домен• имя физического сервера• имя скрипта• количество обработанных запросов• объем вывода скрипта• пиковое количество выделенной памяти• время выполнения скрипта• использованные системные ресурсы
(user/system)• таймеры
Таймеры
• Одна из главных причин создания 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);
Интерфейс к данным
«Виртуальные» таблицы с сырыми данными:• request — данные запроса• timer — значения таймеров• tag — имена тагов• timertag — таймеры <-> таги + значения
тагов, «один ко многим»
Отчеты
• Запросы по сырым данным — это медленно• Отчеты обновляются на лету• Фиксированные отчеты:
– с группировкой по скрипту– по серверу– по домену– по серверу и скрипту– по домену и скрипту– по домену и серверу– по домену, серверу и скрипту
• Отчеты по произвольным тагам
Пример из жизниОбратный пик на графике общего числа запросов в секунду
Пример из жизниПики на графике среднего времени выполнения скриптов
Пример из жизниОдновременное замедление всех скриптов
Пример из жизниПричина — падение одной из баз
Есть чо?
Вопросы?
Спасибо!http://pinba.org