Upgrade to Pro — share decks privately, control downloads, hide ads and more …

uWSGI в помощь метрикам

uWSGI в помощь метрикам

Наиль Хунафин (Яндекс) @ Moscow Python Meetup 66
"uWSGI — это многофункциональный сервер веб-приложений, а каждое современное приложение сопровождается метриками. Мы посмотрим, как возможности uWSGI способны помочь нам в сборе метрик".

Видео: http://www.moscowpython.ru/meetup/66/uwsgi-for-metrics/

Moscow Python Meetup

July 25, 2019
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. 1

  2. О докладе 73 › о метриках › подходы к получению

    метрик › uWSGI + метрики › оптимизация
  3. Польза метрик 76 › динамика системы › выход за нормальные

    значения › аномальное поведение › оповещение
  4. Примеры метрик для WEB-приложения 78 › количество запросов по ендпоинту

    API › время запроса в смежный сервис › коды ответов смежных сервисов › кэш hit/miss › распределение времен ответа API › время запроса в базу
  5. Наша инфраструктура 713 › своя система сбора метрик › стандартизованный

    ответ для pull ручки › внутренне облако › инеграция метрик и облака
  6. Варианты 718 локально в памяти › только если 1 процесс

    разделяемое хранилище › redis › memcached › DB › file
  7. uWSGI 719 uWSGI — веб-сервер и сервер веб-приложений, реализованный для

    запуска приложений Python через протокол WSGI. WSGI - стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера, и самим веб-сервером (PEP 333).
  8. Яндекс.Танк 720 Инструмент для проведения нагрузочного тестирования. › использует высокопроизводительный

    асинхронный генератор › может генерировать десятки тысяч HTTP-запросов в секунду › встроенный мониторинг ресурсов тестируемого сервера › расширяется внешними модулями
  9. uWSGI 728 комбайн › mule › caching framework › cron

    › metrics subsystem › alerting › и т.д.
  10. uWSGI 729 metrics subsystem › metric_get(name) › metric_set(name, value) ›

    metric_inc(name[, delta]) › metric_dec(name[, delta]) › metric_mul(name[, delta]) › metric_div(name[, delta])
  11. uWSGI 730 metrics subsystem › metric_get(name) › metric_set(name, value) ›

    metric_inc(name[, delta]) › metric_dec(name[, delta]) › metric_mul(name[, delta]) › metric_div(name[, delta]) › metric_all_metrics()
  12. uWSGI cache 733 › длина ключа (2048 байт) › количество

    элементов (65 536 элементов) › ttl (0)
  13. Выбор 737 Скорость Зависимость RPS % database ~16 2.6 redis

    ~110 18 uWSGI ~580 95 ~610 (100%) rps без метрик
  14. Что же было не так 745 › росло число метрик

    › падение производительности › стали упираться в подсчет метрик
  15. Что сделали 747 › увидели что основное время тратим на

    pickle › отказались от pickle › провели новые замеры › стало быстрее
  16. К чему это вот всё 749 › собирайте метрики ›

    сравнивайте варианты › профилирование это хорошо