Jmeter -взрослый инструмент для тяжёлых задач

Jmeter -взрослый инструмент для тяжёлых задач

Рассказ про то, как в Miro прокачали Jmeter для работы с ws. Некоторые особенности использования кода внутри Jmeter. Несколько полезных фишек про сбор метрик. Как и зачем использовать параллельное выполнение нагрузочных тестов с е2е тестами.

405cf5a7e7cad100e431fa3a2403e909?s=128

Zoya Chizhkova

October 24, 2019
Tweet

Transcript

  1. Jmeter - взрослый инструмент для тяжёлых задач Антон Нечеухин, Technical

    QA lead
  2. Инфраструктура Кластер для подачи нагрузки Кластер аналогичный проду Сервисы для

    сбора метрик Сервисы для масштабирования Код для управления Инструменты для запуска и автозапуска Сервис для подготовки отчетов
  3. None
  4. Схема сервиса Services Web servers Load balancers Board servers Servers

    with other roles Redis servers PostgreSQL servers PgBouncer Active MQ ... ... ... W ebSocket Billing
  5. Кластер для подачи нагрузки

  6. WS plugin Stress- client Site Web- server Board- server DB

    server API- server
  7. WS plugin 1. Работа с WS 2. Listeners 3. *Механизм

    архивации пакетов как на клиенте 7/45
  8. None
  9. None
  10. 10/45 Особенности выполнения js Это не JS фреймворк, как angular

    или extJS. Это конкретная специфичная версия JS, выполняемая в Java. Стоит проверить код перед запуском. Только Rhino- поддерживаемые функции.
  11. Client → JSR223 Sampler → Используем нужные методы как браузер

    Client Лишнее Клиент- серверное взаимодействие Stress- client - = =
  12. 12/45

  13. - Сложно понять вид отправляемых данных - Требуется совместимость клиента

    и сервера в части моделей Плюсы: - Клиент- серверное взаимодейтсвие редко меняется - Почти нет функциональных ограничений в тесте Минусы
  14. 14/45 также, про JSR JSR sampler имеет свои свойства в

    jmeter.properties, например размер js файла JSR sampler имеет Pre processor and Post processor элементы Для больших и сложных js потребуется заметное время интерпретатору, в этих частях лучше использовать sampler, а не pre, post processors Интерпретатор не сохраняется между вызовами
  15. Обладает более низкой производительностью, чем JSR223 + Groovy, но удобно

  16. JSR с использованием JavaScript может стать узким местом производительности и

    испортить тест 16/45
  17. 17/45

  18. jmeter listeners *исключения: Отладка Общая статистика по ошибкам в консоли

    Jmeter- master: Мониторинг деградации
  19. Наш пример Тип Jmeter server в AWS: m5.large ($0.06 per

    Hour) vCPU: 2 Mem (GiB): 8 Dedicated EBS Bandwidth (Mbps): Up to 3,500 Network Performance (Gbps): Up to 10 → ~730 потоков 19/45
  20. Где разместить сервера? Hetzner Купить сервера Облачный провайдер Облачные load

    инструменты AWS Openstack + Hetzner RedLine13 Blazemeter ...
  21. Облачные провайдеры AWS Openctack+Hetzner Hetzner Фичи Есть Есть, но сложнее

    Нет Цена X В 17 раз дешевле Х В 17 раз дешевле Х
  22. Содержание Jmeter серверов в AWS Например 50К online =50 000

    \ 730 = 69 инстансов За месяц: =69*30*24*0,06=$ 2981 =инстансов*дней*часов*цена 22/45
  23. Spot instances

  24. Содержание SPOT- Jmeter серверов в AWS Те же 50К online

    69 инстансов $0,24 цена спотового инстанса За месяц: =69*6*12*0,24=$ 1192 =инстансов*часов за тест*тестов в месяц*цена Экономия: $1788 (минимум 60%) 24/45
  25. Jmeter - master Jmeter server 1 Jmeter server 2 Jmeter

    server n ...
  26. Filebeat → Kibana

  27. Prometheus - > Grаfana jmeter- prometheus- plugin

  28. Общая информация о пользователях \ сессиях

  29. Автоматические отчеты Сервис для отображения всех отчетов Выводы (текст) Графики

    (картинки) Живые графики (данные) Prometheus Grafana full page screen capture автогенерируемый ш аблон интеграция
  30. Мы используем для отчетов:

  31. Конфиги вместо клонов сценариев Конфиги для Jmeter серверов Легкие онлайн

    результаты Удобная интеграция с CI Запуск в распределенной системе Taurus
  32. Мониторинг деградаций

  33. Сравнение результатов нагрузочного теста Эталонные значения Запуск Эталонные значения ~=

    Запуск + маржа Тест пройден Тест упал
  34. Autotests && Load tests 34/45

  35. Автоматический старт тестов на билд мастера Деплой версии на тестовый

    стенд Запуск функциональных автотестов Запуск нагрузочных тестов в Jmeter Сбор отчета в Allure Timeout Tim eout http request запускает python скрипт, который стартует Jmeter Средняя нагрузка Java+Selenium Выполняется полный набор тестов на мастер Как?
  36. None
  37. Автотесты находят проблемы с замедлением выполнения запросов при изменении кода

  38. ВЫВОДЫ

  39. Cтоит заранее подумать о производительности кода внутри сценария

  40. И об использовании jmeter listeners, когда сценарии и так тяжелы

  41. Jmeter cluster легко настраивается. К нему легко прикручивается мониторинг

  42. Удобно собирать метрики в гибких инструментах

  43. И это позволит собрать все метрики в одном месте

  44. Jmeter имеет специфичный интерфейс, но много может

  45. Anton Necheukhin Technical QA lead anton.n@miro.com @ant_nch www.facebook.com/antonnch88 www.linkedin.com/in/antnch vk.com/antnch

    https://habr.com/ru/company/miro/