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

Теория и практика нагрузочного тестирования

Теория и практика нагрузочного тестирования

Большинство информационных систем, которые нам приходиться тестировать
и "бенчмаркать" можно отнести к классу систем массового обслуживания.
Теория изучающая поведения подобных систем подгрузкой, появилась
довольно давно, задолго до появления компьютерных сетей.
В своем докладе я начать со "сферических" свойств систем под
нагрузкой, которые даёт нам теория систем массового обслуживания,
за тем перейти к более прикладным концепция, таким как
открытая/закрытая модель нагрузки,
и завершить доклад практическими советами в области нагрузочного тестирования.

aragozin

July 02, 2022
Tweet

More Decks by aragozin

Other Decks in Technology

Transcript

  1. О докладчике Занимаюсь высоконагруженными системами на Java c 2006. Разрабатывал

    софт для торговли на фондовых рынках, телекоме, e-commerce, здравоохранении. Выступаю на конференциях, организую митапы, провожу тренинги. Email: [email protected] Blog: blog.ragozin.info Github: https://github.com/aragozin Митапы: https://aragozin.timepad.ru https://www.meetup.com/bigmoscow/
  2. Наш объект тестирования Сервис токенов аутентификации • “Идеальный” микросервес •

    Выписывает токены на доступ между сервисами • Интерфейс HTTP • Основная нагрузка – криптографические преобразования • Находится на критическом путь
  3. Нагрузочное тестирование Цели нагрузочного тестированию A. Проверка SLA на проектном

    уровне нагрузки B. Поиск точки деградации - уровня нагрузки после, которого происходит деградация.
  4. Виды тестирования Тестирование производительности  Load testing – нагрузочное тестирование

     Volume testing – объёмное тестирование  Stress testing – стрессовое тестирование  Endurance testing – тестирование стабильности  Scalability testing – тестирование масштабируемости
  5. Системы массового обслуживания (определение из учебника http://mathhelpplanet.com/static.php?p=sistema-massovogo-obsluzhivaniya ) Математическая модель

    системы массового обслуживания (СМО) включает четыре основных элемента: • поток поступающих сообщений, • систему обслуживания, • характеристики качества и дисциплину обслуживания.
  6. Системы массового обслуживания (определение из учебника http://mathhelpplanet.com/static.php?p=sistema-massovogo-obsluzhivaniya ) Математическая модель

    системы массового обслуживания (СМО) включает четыре основных элемента: • поток поступающих сообщений, интенсивность, статистическое распределение • систему обслуживания, время обработки запроса • характеристики качества и дисциплину обслуживания. FIFO/LIFO/…, таймауты
  7. Модели нагрузки Открытая модель нагрузки  Поток запросов не зависит

    от реакции системы Закрытая модель нагрузки  Поток запросов реагирует на поведение системы  Отрицательная обратная связь: время отклика -> интенсивность запросов
  8. СМО с очередью Ожидание Обработка Время обслуживания - R λ

    Нагрузка (запросов в секунду) R ? μ Пиковая пропускная способность (запросов в секунду)
  9. СМО с очередью 100 0 50 80 λ - Нагрузка

    (запросов в секунду) R (мс) время отклика
  10. СМО с очередью λ - Нагрузка (запросов в секунду) 100

    0 50 80 1/ μ = 10 μ = 100 R (мс) время отклика
  11. СМО с очередью λ - Нагрузка (запросов в секунду) 100

    0 50 80 1/ μ = 10 μ = 100 R (мс) время отклика
  12. СМО с очередью λ - Нагрузка (запросов в секунду) 1/

    μ = 10 μ = 100 R = 1 (μ - λ) 100 0 50 80 R (мс) время отклика 50 20
  13. СМО с очередью Закрытая нагрузка Каналы: 1 Пользователи: 10 0

    200 400 600 800 1000 1200 0 2000 4000 6000 8000 10000 12000 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 1450 1500 Mean Rate
  14. СМО с очередью Закрытая нагрузка Каналы: 2 Пользователи: 20 0

    500 1000 1500 2000 2500 0 2000 4000 6000 8000 10000 12000 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 Mean Rate
  15. СМО с очередью Открытая нагрузка с таймаутом Каналы: 1 Таймаут:

    10000 0 200 400 600 800 1000 1200 1400 1600 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 1150 1200 1250 1300 1350 1400 1450 1500 Mean Failure Rate
  16. СМО с очередью Открытая нагрузка с таймаутом Каналы: 2 Таймаут:

    10000 0 500 1000 1500 2000 2500 3000 3500 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 Mean Failure Rate
  17. 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0 5

    10 15 20 25 30 Error rate Rate Формула Эрланга Вероятность отказа (формула Эрланга), для системы с n каналами обслуживания, без очереди. 10 каналов
  18. СМО с очередью Открытая нагрузка с таймаутом Каналы: 2 Таймаут:

    10000 0 500 1000 1500 2000 2500 3000 3500 0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 Mean Failure Rate
  19. Оценка случайной величины Средние Среднее арифметическое + Простота вычисления -

    Непоказательный параметр Перцентили + Наглядная интерпретация - Наличие “метапараметра”
  20. Поведение реальной системы Сложное внутренне поведение Очереди повсюду диск, CPU,

    сеть Сумма независимых случайных величин Центральная предельная теорема
  21. Оценка случайной величины Средние Среднее арифметическое + Простота вычисления -

    Непоказательный параметр Тренды, оптимизация Перцентили + Наглядная интерпретация - Наличие “метапараметра” Пороги и SLA
  22. Реальное тестирование • Постановка цели тестирования • Выбор целевых метрик

    • Для работы с отрытой моделью нагрузки требуется подходящий инструмент. • Валидация результатов тестирования  Сравнение динамической нагрузки: стенд – реальная система  Воспроизведение реальной нагрузки на стенде
  23. Ошибка выбора модели SLA  p99 < 10ms  Rate

    1000 RPS Генератор нагрузки  100 потоков (~ 10000 RPS max rate) GC пауза 1 секунда в ходе тестирования  Тестовый стенд -> 100 запросов R > 10ms  Реальность -> 1000 запросов R > 10ms
  24. Заключение • Система массового обслуживания подчиняются фундаментальным законам • Тестирование

    производительности – эмпирический процесс, его не заменить формулами • Теория важна для избежание ошибок • Всё надо мерять и перемерять
  25. Спасибо! Занимаюсь высоконагруженными системами на Java c 2006. Разрабатывал софт

    для торговли на фондовых рынках, телекоме, e-commerce, здравоохранении. Выступаю на конференциях, организую митапы, провожу тренинги. Email: [email protected] Blog: blog.ragozin.info Github: https://github.com/aragozin Митапы: https://aragozin.timepad.ru https://www.meetup.com/bigmoscow/