3. 1. ТЗ, дизайн, верстка
2. Разработали
3. Протестировали
4. Провели нагрузочное тестирование
5. Сдали проект и забыли
… А дальше?
Новый проект
4. Проекты на сопровождении – это:
• Постоянно новые фичи
• Неизбежно новые баги
• Неизбежно «медленные» участки
кода и «медленные» запросы
Проекты на сопровождении
требуют постоянного контроля
показателей
Проекты на поддержке и сопровождении
5. • CPU load average
• Memory usage
• Network traffic
• Disk space usage
• Utilization per device
• Processes count
• Inode table usage
• …
Показатели веб-проекта
6. • CPU load average
• Memory usage
• Network traffic
• Disk space usage
• Utilization per device
• Processes count
• Inode table usage
• …
Пользователь непосредственно
ощущает на себе только request
time и отсутствие ошибок
Показатели веб-проекта
7. • Realtime-статистика о выполнении PHP-
скриптов
• Extension для PHP + storage для MySQL
• Отправка по UDP
• Минимальный overhead для сбора и
отправки данных на сервер статистики
• Realtime-отчеты
• Таймеры
Pinba
9. Pinba
• Сырые данные:
• request, timer, tag, timertag
• Отчеты:
• report_by_script_name
• report_by_server_name
• report_by_hostname
• report_by_server_and_scriptr
• report_by_hostname_and_script
• report_by_hostname_and_server
• report_by_hostname_server_and_sc
ript
• Отчеты по тегам:
• tag info by 1 tag
• tag info by 2 tags
• tag info by N tags
• tag report with grouping by script name
and tag value
• tag report with grouping by script name,
tag value, hostname and server name
• tag report with grouping by script name
and 2 tags
• tag report with grouping by script name
and N tags
10. • Очень простая в установке:
• Ставите pinba_extension за 30 секунд и статистика по ВСЕМ
запросам начинает отправляться в pinba
• В облаке (AWS, Azure, …) готовите образ с
pinba_extension в комплекте и вся статистика
собирается без дополнительных
телодвижений
Pinba
20. А тут похоже стало все плохо :/
Intaro Pinboard / В курсе ошибок
21. Наша статистика использования Pinboard на 05.2014:
• Мониторится 226 сайтов
• В pinba ~4 млн. хитов в сутки
• В среднем 30 ошибок в сутки
• Предоставляем в Pinboard доступ заказчикам
• Быстрое реагирование и устранение ошибок до
того, как опомнился пользователь или клиент :)
Кроме нас Pinboard используют сторонние
разработчики с сайтами в десятки миллионов хитов
в сутки
Intaro Pinboard / В Интаро
28. Помимо php_extension есть расширения для:
• Nginx
• https://github.com/tony2001/ngx_http_pinba_module
• Node.js
• https://github.com/Sannis/node-pinba
• Ruby
• https://github.com/prepor/pinbo
• Python
• https://github.com/IsCoolEntertainment/pynba
• http://habrahabr.ru/post/200128/
• Есть прецеденты сбора через Pinba клиентских метрик Timing API
Мониторим не только PHP
30. Замеряйте отдельные участки кода и помечайте их тегами:
$timer = pinba_timer_start([
‘category’ => ‘database’,
‘group’ => ‘database::select’,
]);
//делаем select в БД
pinba_timer_stop($timer);
Замеряем отдельные участки кода
36. Чтобы смотреть отчеты в Pinboard по домену/серверу, нужно так:
$pinbaData = pinba_get_info();
$initTags = [];
if (isset($pinbaData['hostname'])) {
$initTags['__hostname'] = $pinbaData['hostname'];
}
if (isset($pinbaData['server_name'])) {
$initTags['__server_name'] = $pinbaData['server_name'];
}
$timer = pinba_timer_start(array_merge($initTags, [
‘category’ => ‘database’,
‘group’ => ‘database::select’,
]));
//делаем select в БД
pinba_timer_stop($timer);
в начале скрипта
37. Symfony2: https://github.com/intaro/pinba-bundle
• Настраивает script_name
• Автоматические таймеры на Doctrine (БД), Twig
(шаблоны) и Memcached (кеш)
• Позволяет обернуть таймерами любые другие сервисы
(Redis, Queue и др.)
1C-Битрикс: https://gist.github.com/muxx/9cc8b65a9105c8ba18a8
• На старом ядре позволяет отправлять в таймерах статистику
по запросам к БД
Поддержка таймеров в PHP-фреймворках
38. «Видим» проект так, как «видит» его
пользователь
Персентели: В курсе, если проекты проседают по
скорости отдачи
В курсе, если на проектах ошибки
Мониторим фоновые скрипты
Таймеры: Быстро локализуем проблему в
скриптах
pinba + Pinboard
39. Пользуйтесь pinba + Pinboard!
И радуйтесь жизни :)
Свободные лицензии:
• GNU GPLv2 для pinba
• MIT для Intaro Pinboard
URLs:
pinba.org
intaro.github.io/pinboard/
Мои контакты:
twitter.com/salikhov
habrahabr.ru/users/muxx/
github.com/muxx
Спасибо!