Пример из жизни

advertisement
Pinba
статистика в режиме
реального времени
Довгаль Антон, Badoo.com tony@daylessday.org
Немного о себе
• Разработчик 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
Спасибо!
Download