Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Мониторинг
производительности
WEB-проекта
Владимир Буянов,
Ultimate Guitar
18 лет на рынке.
60 000 000 уников в месяц.
Веб
Ресурс №1 для гитаристов
во всем мире.
iPhone
Платное приложение №1
в разд...
Стек технологий
• PHP 7.1 + Yii2
• Node.js
• Nginx
• Redis + Memcached
• Percona MySQL
Зачем это нужно
• Частые деплои
• явные ошибки
• падение производительности
• Внешние факторы
• проблемы сети
• проблемы с...
Производительность
• Влияет на конверсию (–20% / с*)
• Влияет на ранжирование в поисковиках
• Сама себя не измерит
*Исслед...
Реальный случай
• 2 домена: free и paid
• Оба работают по SSL
• На paid пользователи приходят с free домена
• TTFB, DNS и ...
Медленный бэкенд
• Внешний сервис медленно отвечает
• Медленные запросы к DB
• Медленный код
• Баг в php, при котором без ...
В бой идут access-логи
• Elasticsearch + Graylog + Grafana
В бой идут access-логи
• Elasticsearch + Graylog + Grafana
• Мониторим response time, кол-во запросов и можем
производить ...
Response time по страницам
В бой идут access-логи
• Elasticsearch + Graylog + Grafana
• Мониторим response time, кол-во запросов и можем
производить ...
Метрики прямо из приложения
• Замеряем скорость выполнения:
• Конкретных кусков кода
• Обращений к внешним сервисам
• Пише...
Хорошо на сервере ≠ хорошо
у пользователя
• Блокировка загрузки страницы
• Неоптимизированные картинки
• Человеческий факт...
Google pagespeed
• Нетребователен к ресурсам, всю работу выполняют
сервера Google
• Готовые модули к большому числу языков
Google pagespeed
• Нетребователен к ресурсам, всю работу выполняют
сервера Google
• Готовые модули к большому числу языков...
Больше данных!
• Размер страницы
• Кол-во запросов к ресурсам
• Время domReady, onLoad, TTFB и т.д.
• Блокировки загрузки
sitespeed.io
• Desktop/mobile-версии страниц
• Полный размер и кол-во запросов
• Время загрузки страницы (domReady, onLoad...
HAR
Еще про sitespeed
• Может эмулировать низкоскоростную сеть
• Может работать с удаленным браузером на Android-
устройстве
•...
Еще про sitespeed
• Может эмулировать низкоскоростную сеть
• Может работать с удаленным браузером на Android
устройстве
• ...
Проблема у части пользователей
• Регион
• Тестовая группа
• Браузер/девайс
Мониторим каждого
• Браузер с Performance API
• JavaScript
• Nginx
• Python + Pandas
• MySQL
Что измеряем
• DNS
• Redirect
• Timing-Allow-Origin
• Connect
• SSL
• TTFB
• domReady
• onLoad
• Тип и поколение соединени...
Группировка
• По странице
• По типу устройства
• По странице и типу устройства
• По странице, типу устройства и региону
• ...
Только перцентили (50/70/90/95)
Задача
• 2 домена: free и paid
• Оба работают по SSL
• На paid пользователи приходят с free домена
• TTFB, DNS и SSL на до...
Было
Стало
Выводы
1. Многогранный мониторинг
2. Правильная обработка данных
3. Легко начать
4. Это только начало
Спасибо
v.buyanov@ultimate-guitar.com
github: larrabee
Мониторинг быстродействия web-проекта / Владимир Буянов (Ultimate Guitar)
Upcoming SlideShare
Loading in …5
×

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

212 views

Published on

РИТ++ 2017, Root Conf
Зал Пекин + Шанхай, 5 июня, 10:00

Тезисы:
http://rootconf.ru/2017/abstracts/2643.html

Знаете ли вы, что видят пользователи после деплоя вашего кода на продакшн?

В своем докладе я расскажу:
* Почему мониторинг должен показывать не только, работает сайт или нет, и почему это важно.
* Как мы следим за производительностью кода через мониторинг.
* Как мониторить сайт глазами пользователя.
* Какие метрики наиболее полезны и как их обрабатывать.
* Какие проблемы и как можно обойти автоматикой.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

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

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

×