Мониторинг
производительности
WEB-проекта
Владимир Буянов,
Ultimate Guitar
18 лет на рынке.
60 000 000 уников в месяц.
Веб
Ресурс №1 для гитаристов
во всем мире.
iPhone
Платное приложение №1
в разделе «Музыка» в App Store.
iPad
11 000 000 скачиваний из
App Store.
Android
Лучшее приложение 2014 года
по версии Google.
Стек технологий
• PHP 7.1 + Yii2
• Node.js
• Nginx
• Redis + Memcached
• Percona MySQL
Зачем это нужно
• Частые деплои
• явные ошибки
• падение производительности
• Внешние факторы
• проблемы сети
• проблемы с новыми версиями ОСей и браузеров
• Изменения в мире
• сознательная блокировка ресурсов в отдельных странах
Производительность
• Влияет на конверсию (–20% / с*)
• Влияет на ранжирование в поисковиках
• Сама себя не измерит
*Исследование soasta.com
Реальный случай
• 2 домена: free и paid
• Оба работают по SSL
• На paid пользователи приходят с free домена
• TTFB, DNS и SSL на домене paid вырос на 30%
• На остальных доменах изменений не замечено
Медленный бэкенд
• Внешний сервис медленно отвечает
• Медленные запросы к DB
• Медленный код
• Баг в php, при котором без reload
после деплоя растет response time
В бой идут access-логи
• Elasticsearch + Graylog + Grafana
В бой идут access-логи
• Elasticsearch + Graylog + Grafana
• Мониторим response time, кол-во запросов и можем
производить произвольную агрегацию запросов и поиск по
ним
Response time по страницам
В бой идут access-логи
• Elasticsearch + Graylog + Grafana
• Мониторим response time, кол-во запросов и можем
производить произвольную агрегацию запросов и поиск по
ним
• Задача: response time бэкендов не изменился
Метрики прямо из приложения
• Замеряем скорость выполнения:
• Конкретных кусков кода
• Обращений к внешним сервисам
• Пишем в Time Series DB
• Пишем максимально много метрик
Хорошо на сервере ≠ хорошо
у пользователя
• Блокировка загрузки страницы
• Неоптимизированные картинки
• Человеческий фактор
• Статика без gzip
• Блокировка показа полезного контента
• Проблемы с сетью
Google pagespeed
• Нетребователен к ресурсам, всю работу выполняют
сервера Google
• Готовые модули к большому числу языков
Google pagespeed
• Нетребователен к ресурсам, всю работу выполняют
сервера Google
• Готовые модули к большому числу языков
• Задача: рейтинг страницы не изменился
Больше данных!
• Размер страницы
• Кол-во запросов к ресурсам
• Время domReady, onLoad, TTFB и т.д.
• Блокировки загрузки
sitespeed.io
• Desktop/mobile-версии страниц
• Полный размер и кол-во запросов
• Время загрузки страницы (domReady, onLoad)
• Сегментируем все запросы на 1st/3rd party
• Сегментируем по типу ресурсов (js/css/images/etc)
• Сохраняем HAR-репорты
HAR
Еще про sitespeed
• Может эмулировать низкоскоростную сеть
• Может работать с удаленным браузером на Android-
устройстве
• Performance budget
• Self-Hosted
• Docker
Еще про sitespeed
• Может эмулировать низкоскоростную сеть
• Может работать с удаленным браузером на Android
устройстве
• Performance budget
• Self-Hosted
• Docker
• Задача: никакие метрики не изменились
Проблема у части пользователей
• Регион
• Тестовая группа
• Браузер/девайс
Мониторим каждого
• Браузер с Performance API
• JavaScript
• Nginx
• Python + Pandas
• MySQL
Что измеряем
• DNS
• Redirect
• Timing-Allow-Origin
• Connect
• SSL
• TTFB
• domReady
• onLoad
• Тип и поколение соединения
• A/B-тесты
Группировка
• По странице
• По типу устройства
• По странице и типу устройства
• По странице, типу устройства и региону
• По странице, типу соединения и его
поколению для мобильной связи
Только перцентили (50/70/90/95)
Задача
• 2 домена: free и paid
• Оба работают по SSL
• На paid пользователи приходят с free домена
• TTFB, DNS и SSL на домене paid вырос на 30%
• На остальных доменах изменений не замечено
• Response time серверов не изменился
• Google pagespeed и Sitespeed.io проблемы не видит
Было
Стало
Выводы
1. Многогранный мониторинг
2. Правильная обработка данных
3. Легко начать
4. Это только начало
Спасибо
v.buyanov@ultimate-guitar.com
github: larrabee

Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)

  • 1.
  • 2.
    18 лет нарынке. 60 000 000 уников в месяц. Веб Ресурс №1 для гитаристов во всем мире. iPhone Платное приложение №1 в разделе «Музыка» в App Store. iPad 11 000 000 скачиваний из App Store. Android Лучшее приложение 2014 года по версии Google.
  • 3.
    Стек технологий • PHP7.1 + Yii2 • Node.js • Nginx • Redis + Memcached • Percona MySQL
  • 4.
    Зачем это нужно •Частые деплои • явные ошибки • падение производительности • Внешние факторы • проблемы сети • проблемы с новыми версиями ОСей и браузеров • Изменения в мире • сознательная блокировка ресурсов в отдельных странах
  • 5.
    Производительность • Влияет наконверсию (–20% / с*) • Влияет на ранжирование в поисковиках • Сама себя не измерит *Исследование soasta.com
  • 6.
    Реальный случай • 2домена: free и paid • Оба работают по SSL • На paid пользователи приходят с free домена • TTFB, DNS и SSL на домене paid вырос на 30% • На остальных доменах изменений не замечено
  • 7.
    Медленный бэкенд • Внешнийсервис медленно отвечает • Медленные запросы к DB • Медленный код • Баг в php, при котором без reload после деплоя растет response time
  • 8.
    В бой идутaccess-логи • Elasticsearch + Graylog + Grafana
  • 9.
    В бой идутaccess-логи • Elasticsearch + Graylog + Grafana • Мониторим response time, кол-во запросов и можем производить произвольную агрегацию запросов и поиск по ним
  • 10.
    Response time постраницам
  • 11.
    В бой идутaccess-логи • Elasticsearch + Graylog + Grafana • Мониторим response time, кол-во запросов и можем производить произвольную агрегацию запросов и поиск по ним • Задача: response time бэкендов не изменился
  • 12.
    Метрики прямо изприложения • Замеряем скорость выполнения: • Конкретных кусков кода • Обращений к внешним сервисам • Пишем в Time Series DB • Пишем максимально много метрик
  • 13.
    Хорошо на сервере≠ хорошо у пользователя • Блокировка загрузки страницы • Неоптимизированные картинки • Человеческий фактор • Статика без gzip • Блокировка показа полезного контента • Проблемы с сетью
  • 14.
    Google pagespeed • Нетребователенк ресурсам, всю работу выполняют сервера Google • Готовые модули к большому числу языков
  • 15.
    Google pagespeed • Нетребователенк ресурсам, всю работу выполняют сервера Google • Готовые модули к большому числу языков • Задача: рейтинг страницы не изменился
  • 16.
    Больше данных! • Размерстраницы • Кол-во запросов к ресурсам • Время domReady, onLoad, TTFB и т.д. • Блокировки загрузки
  • 17.
    sitespeed.io • Desktop/mobile-версии страниц •Полный размер и кол-во запросов • Время загрузки страницы (domReady, onLoad) • Сегментируем все запросы на 1st/3rd party • Сегментируем по типу ресурсов (js/css/images/etc) • Сохраняем HAR-репорты
  • 18.
  • 19.
    Еще про sitespeed •Может эмулировать низкоскоростную сеть • Может работать с удаленным браузером на Android- устройстве • Performance budget • Self-Hosted • Docker
  • 20.
    Еще про sitespeed •Может эмулировать низкоскоростную сеть • Может работать с удаленным браузером на Android устройстве • Performance budget • Self-Hosted • Docker • Задача: никакие метрики не изменились
  • 21.
    Проблема у частипользователей • Регион • Тестовая группа • Браузер/девайс
  • 22.
    Мониторим каждого • Браузерс Performance API • JavaScript • Nginx • Python + Pandas • MySQL
  • 23.
    Что измеряем • DNS •Redirect • Timing-Allow-Origin • Connect • SSL • TTFB • domReady • onLoad • Тип и поколение соединения • A/B-тесты
  • 25.
    Группировка • По странице •По типу устройства • По странице и типу устройства • По странице, типу устройства и региону • По странице, типу соединения и его поколению для мобильной связи
  • 26.
  • 27.
    Задача • 2 домена:free и paid • Оба работают по SSL • На paid пользователи приходят с free домена • TTFB, DNS и SSL на домене paid вырос на 30% • На остальных доменах изменений не замечено • Response time серверов не изменился • Google pagespeed и Sitespeed.io проблемы не видит
  • 28.
  • 29.
  • 30.
    Выводы 1. Многогранный мониторинг 2.Правильная обработка данных 3. Легко начать 4. Это только начало
  • 31.