Size: a a a

QA — Load & Performance

2021 June 08

VG

Viktor Ganeles in QA — Load & Performance
Я вспоминаю уроки по java - там рассказывалось про разные типы массивов list:

Бывают массивы, где все элементы нумерованы по-порядку, и там вставить элемент в середину = перезаписать половину массива

А бывают варианты, где нет строгой нумерации, там каждый элемент сцеплен с двумя соседними
В такой добавить значение в серёдку это просто добавитьзначение
источник

VG

Viktor Ganeles in QA — Load & Performance
А кстати (я уже не про джава) Ещё есть вариант - нумеровать строки не по порядку 1-2-3 а нумеровать по порядку 10-20-30

Тогда вставка 9 строк и менее не означает пересчета
источник

АК

Андрей Коломытов... in QA — Load & Performance
Это всё очень интересно, надо разобраться 🙂
источник

VG

Viktor Ganeles in QA — Load & Performance
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Опрашивать выходную очередь. И по CorrelationID или другим признакам "закрывать" транзакцию в LinkedBlockingQueue
Ограничение способа - работает если JMeter/Gatling один и отправлял и получал сообщения
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Если тест распределенный, то да, надо будет Virtual Table Server, Simple Table Server, ...
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Доклад про тестирование асинхронных процессов (#JMS, AMQP, ...) в Apache.JMeter и Gatling

Не ждите сообщений, получайте их: Асинхронное тестирование производительности

Видео: https://www.youtube.com/watch?v=wDzltn8mEL4

Слайды: https://docs.google.com/presentation/d/1HesLU77V1XWx-LIoX8Lxxi2dnenL-oC62N0fAHfXRqg/edit?usp=sharing

Код тестов: https://github.com/polarnik/Performance.testing.via.AMQP.with.Gatling

Плагин SharedHashMap для #JMeter:
https://github.com/polarnik/io.github.qaload.SharedHashMap

Обзор рабочих и интересных форков плагина для #AMQP для JMeter:
https://github.com/polarnik/JMeter-Rabbit-AMQP-info

Плагин AsyncLogPlugin для #Gatling:
https://github.com/polarnik/gatling-asynclog-plugin

Сообщество инженеров по тестированию производительности:
@qaload (канал) / @qa_load (чат)
YouTube
Вячеслав Смирнов — Не ждите сообщений, получайте их  Асинхронное тестирование производительности
Ближайшая конференция:
Heisenbug 2021 Piter — 6-9 апреля, онлайн.
Подробности и билеты: https://bit.ly/2Ms2UQx

. .Доклад о разработке плагинов для Gatling и тестировании производительности через RabbitMQ, и решении технических проблем и создании новых.

Доклад основан на опыте команды Raiffeisen Business Platform по тестированию производительности асинхронных микросервисов, которые принимают запросы через RabbitMQ по протоколу AMQP и отвечают в RabbitMQ.

В качестве инструмента для подачи нагрузки был выбран Gatling. И в ходе написания тестов были решены следующие технические проблемы:

- как подать нагрузку через RabbitMQ, когда нет плагина для AMQP;
- как написать оптимальный Gatling-сценарий, который не будет потреблять гигабайты оперативной памяти;
- как эффективно замерить длительность от момента отправки сообщения в одну очередь, до момента появления сообщения в другой очереди, и не забыть момент появления сообщения во временной очереди;
- как логировать асинхронные операции, какой подход выбрать для…
источник

VG

Viktor Ganeles in QA — Load & Performance
Опрашивать - это всё равно pull, верно?

Хотя опрашивать внутри жметра - можно очень часто

Но как в неё попадут данные из системы?
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Твоя текущая модель: В одном потоке отправить запрос в очередь и ждать ответа в нем же

Предлагаемая модель: В одном потоке отправить запрос и отключиться. В другом потоке раз в секунду опрашивать выходную очередь
Два поток синхронизируются через программный объект LinkedBlockingQueue (https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/LinkedBlockingQueue.html)
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Не бойся потерять в точности длительности транзакций. Так как и AMQP и JMS в выходном сообщении оставляют метку времени, когда сообщение было положено в выходную очередь. И транзакция в JMeter закрывается по этому времени, а не по тому, когда JMeter это сообщение прочел и распарсил
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Но транзакции надо закрывать программно.
Для JMeter это просто, SampleResult API
Для Gatling - тоже просто. Но это отдельный плагин.
Который для версии Gatling 3.6 надо будет обновить, как вчера выясняли
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Так получается 5-20 потоков отправляют сообщения и 1-10 читают ответы. Так можно подавать нагрузку хоть 10-100 TPS.
Но при этом будет всего до 30-ти подключений к серверу очередей.

А не 1000+ - для сервера очередей не получается много подключений держать сразу, он просто не выдерживает
источник

A

Anton in QA — Load & Performance
Вот я изначально и думал о таком конвертере, как плагине для jmeter. У нас сейчас в вижуал студии параметризация через xpath сделана, и плагин самописный для декодирования msbin прямо из студии работал. Ну и в качестве доп плюшки было сравнение прямо из студии фидлер рекординга, сконвертированного в .webtest и готового параметризованного вебтеста. Хотел этот подход перенести в jmeter. Но раз готового в открытом доступе ничего нет, похоже, писать такое чудо тоже придется нам)
источник

KY

Kirill Yurkov in QA — Load & Performance
https://performancelabus.com/jmeter-changing-intensity/
вот подобным образом можно внутрь прокидывать любые параметры. если на машине с жметером запустить сервис который будет это делать - то будет полноценный пулл
источник

A

Anton in QA — Load & Performance
У нас переезд на html (сейчас wpf приложение) обещают через год-полтора) Просто 19 студия последняя, которая поддерживает веб тесты, дальше майки отказываются от саппорта этого функционала. Боюсь в дальнейшем о проблемах совместимости
источник

А

Апельсин in QA — Load & Performance
Всем привет. Помню в чате обсуждалось решение по хранению историчных данных по мониторингу путём использования второй influx DB. Что-то найти не получается, может есть статья или вкратце кто опишет, что там нужно сделать и какие требования ко второй инфлюкс (ну там развернуть изолированно, на другом сервере и пр.)
источник

KY

Kirill Yurkov in QA — Load & Performance
а у вас данные из инфлюкса пропадают?
источник

KY

Kirill Yurkov in QA — Load & Performance
за какой период?
источник

VK

Vitaliy Kudryashov in QA — Load & Performance
Доклад был от Славы, точнее пара докладов - и для облегчения работы дашбордов было предложено использовать 2 базы с разными ретеншен полиси
источник

VK

Vitaliy Kudryashov in QA — Load & Performance
YouTube
Вячеслав Смирнов — Программирование с Grafana и InfluxDB: Сборник рецептов
Ближайшая конференция:
Heisenbug 2021 Piter — 6-9 апреля, онлайн.
Подробности и билеты: https://bit.ly/2Ms2UQx

. Grafana является стандартным инструментом для визуализации метрик во всех сферах деятельности. InfluxDB является стандартным инструментом для сбора результатов тестов производительности.

И разработка доски Grafana — частая и актуальная задача. Кто-то может называть это отчетом, кто-то витриной данных, но так или иначе, нужно уметь подготовить доску Grafana.

При обновлении доски Grafana для инструмента Gatling удалось успешно решить разные технические задачи. Решения сложные, но красивые.

Вячеслав составил сборник рецептов для формирования доски Grafana 6.5.2 (актуальная) для InfluxDB 1.7 (актуальная) с применением лишь стандартных компонентов Grafana и функций InfluxDB:

- фильтрация метрик;
- фильтрация фильтров по времени и по другим фильтрам и тегам;
- применение опциональных фильтров к данным, у которых нет нужных тегов;
- выбор значений по умолчанию для агрегирующих функций при пустом наборе…
источник