Size: a a a

QA — Load & Performance

2020 October 26

M

Maxim in QA — Load & Performance
Никита Новожилов
а что ручного в loadrunner и jmeter? Вообще плохо представляю ручное в нагрузке. Сидеть и с невероятной скоростью руками выполнять юзкейзы?
Некоторые считают, что один раз в интерфейсе загрузить большой файл, это тоже кейс нагрузочного тестирования.
источник

D

Dk Vdec in QA — Load & Performance
Всем привет. Вопрос по гатлингу.

Есть сценарий на гатлинге упакованный в докер. В самом сценарии прописана выгрузка данных в ифлуксдб находящуюся на сервере и постоянно доступную.

При запуске одного контейнера всё работает как нужно.

Но при попытке увеличить нагрузку по средствам поднятия дополнительных контейнеров, столкнулся с проблемой того что данные в инфлуксе сохраняются только от одного контейнера.

Отсюда вопрос, есть ли возможность собирать данные с нескольких контейнеров в одной бд?
источник

СФ

Степа Фомичев... in QA — Load & Performance
Да, как отправляете данные в инфлакс? Никаких особенностей по Отправке данных с нескольких машин нет
источник

СФ

Степа Фомичев... in QA — Load & Performance
Уверены, что отправляете в один межамент
источник

СЧ

Сергей Чепкасов... in QA — Load & Performance
Dk Vdec
Всем привет. Вопрос по гатлингу.

Есть сценарий на гатлинге упакованный в докер. В самом сценарии прописана выгрузка данных в ифлуксдб находящуюся на сервере и постоянно доступную.

При запуске одного контейнера всё работает как нужно.

Но при попытке увеличить нагрузку по средствам поднятия дополнительных контейнеров, столкнулся с проблемой того что данные в инфлуксе сохраняются только от одного контейнера.

Отсюда вопрос, есть ли возможность собирать данные с нескольких контейнеров в одной бд?
Пробовал распределенный запуск, все должно сохраняться, ты прямо в инфлаксе смотришь? Проблема скорее в том как эти данные визуализировать в графане, стандартные борды не подходят. Решал проблему запуском одинаковых симуляций, но с разным именем файла с каждого агента, как костыль тогда сработало.

Еще хороший вариант собрать после теста все файлы simulation.log, положить в одну директорию (simulation_1.log, simulation_2.log) и сгенерировать сразу по всем файлам отчет. generateReport так умеет
источник

D

Dk Vdec in QA — Load & Performance
Степа Фомичев
Да, как отправляете данные в инфлакс? Никаких особенностей по Отправке данных с нескольких машин нет
Отправляю по графиту, в инфлуксе самом слушатель настроен на эту симуляцию.

В самом инфлуксе, как и в графане, данные отображаются как будто запущен только один контейнер(по нагрузке).
источник

СФ

Степа Фомичев... in QA — Load & Performance
У всех контейнеров одинаковые настройки подключения, соответственно?
источник

D

Dk Vdec in QA — Load & Performance
Степа Фомичев
У всех контейнеров одинаковые настройки подключения, соответственно?
Да
источник

D

Dk Vdec in QA — Load & Performance
При рандомизации поля request видны все запущенные симуляции и нагрузка от них, но суммарный rps всё равно отображается только от одного контейнера.
источник

PB

Pavel Bairov in QA — Load & Performance
Dk Vdec
При рандомизации поля request видны все запущенные симуляции и нагрузка от них, но суммарный rps всё равно отображается только от одного контейнера.
Так и должно) представь данные по рпс как ряд
5 5 6 5 5 4 5
В базу пишутся «одинаковые» значения с разных тачек, но для графика это один ряд, скажем так
источник

PB

Pavel Bairov in QA — Load & Performance
Переслано от Вячеслав Смирнов...
Для общего количества RPS такой запрос:

SELECT non_negative_derivative(cumulative_sum(sum("count")), 1s) AS "All"
FROM "gatling"
WHERE (
   "request" = 'allRequests' AND
   "status" = 'all' AND
   "simulation" =~ /^$simulation$/ AND
   ("run" =~ /^$run$/ OR "run" = '') AND
   ("host" =~ /^$host$/ OR "host" = '')) AND
   $timeFilter
GROUP BY time($g)
fill(null)
источник

PB

Pavel Bairov in QA — Load & Performance
У меня вот немного похожее на это, только не все реквесты, а которые выбрал
источник

PB

Pavel Bairov in QA — Load & Performance
источник

YZ

Yehor Zakharov in QA — Load & Performance
Dk Vdec
Всем привет. Вопрос по гатлингу.

Есть сценарий на гатлинге упакованный в докер. В самом сценарии прописана выгрузка данных в ифлуксдб находящуюся на сервере и постоянно доступную.

При запуске одного контейнера всё работает как нужно.

Но при попытке увеличить нагрузку по средствам поднятия дополнительных контейнеров, столкнулся с проблемой того что данные в инфлуксе сохраняются только от одного контейнера.

Отсюда вопрос, есть ли возможность собирать данные с нескольких контейнеров в одной бд?
я ставил тачкам разные имена в конфиге гатлинга, так работало
источник

YZ

Yehor Zakharov in QA — Load & Performance
потом по маске отображал в графане
источник

D

Dk Vdec in QA — Load & Performance
Окей, спасибо всем большое)  Вариант решения стал понятен.
источник

СФ

Степа Фомичев... in QA — Load & Performance
Сегодня немного поразбирался с gaussian random timer, если кому-то интересно, как он работает, то вот к чему я пришел(постарался опустить большую часть математики):
В этом таймере мы можем задать два числа: константную задержку и смещение.
В основе этого рандомизатора лежит метод класса Math nextGaussian()(https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextGaussian--), где среднеквадратическое отклонение равно 1.0.

В gaussian random timer время задержки высчитывается слудующим образом:
(nextGaussian() * смещение) + константная задержка = thinktime

nextGaussian ~ в 66% случаев принимает значение от -среднеквадратическое отклонение(в нашем случае -1.0) до +среднеквадратическое отклонение(+1.0).
В 27% случаев это будет -2.0/+2.0
В 5% -3.0/+3.0

При константной задержке в 500ms и смещении 100 ms в существенном для нас проценте случаев (68.26%) числа будут в диапазоне от 400 до 600 ms (+/- (100 * 1) + 400),
еще в 27.18% случаев диапазон будет от 300 до 700 (+/- (100 * 2) + 400) и вего в 4.28% будет от 200 до 800 (+/- (100 * 3) + 400). Что в сумме нам будет давать ожидаемое нами среднее значение в ~ 500.
В 0.28% значения будут вне пределов этого диапазона(кому интересно, можете посмотреть правило трех сигм).
источник

AK

Alexey Kübler-Ross in QA — Load & Performance
Степа Фомичев
Сегодня немного поразбирался с gaussian random timer, если кому-то интересно, как он работает, то вот к чему я пришел(постарался опустить большую часть математики):
В этом таймере мы можем задать два числа: константную задержку и смещение.
В основе этого рандомизатора лежит метод класса Math nextGaussian()(https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextGaussian--), где среднеквадратическое отклонение равно 1.0.

В gaussian random timer время задержки высчитывается слудующим образом:
(nextGaussian() * смещение) + константная задержка = thinktime

nextGaussian ~ в 66% случаев принимает значение от -среднеквадратическое отклонение(в нашем случае -1.0) до +среднеквадратическое отклонение(+1.0).
В 27% случаев это будет -2.0/+2.0
В 5% -3.0/+3.0

При константной задержке в 500ms и смещении 100 ms в существенном для нас проценте случаев (68.26%) числа будут в диапазоне от 400 до 600 ms (+/- (100 * 1) + 400),
еще в 27.18% случаев диапазон будет от 300 до 700 (+/- (100 * 2) + 400) и вего в 4.28% будет от 200 до 800 (+/- (100 * 3) + 400). Что в сумме нам будет давать ожидаемое нами среднее значение в ~ 500.
В 0.28% значения будут вне пределов этого диапазона(кому интересно, можете посмотреть правило трех сигм).
Отлично, спасибо за информативную выжимку личного бесценного опыта! 👍
источник

AK

Alexey Kübler-Ross in QA — Load & Performance
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Dk Vdec
Всем привет. Вопрос по гатлингу.

Есть сценарий на гатлинге упакованный в докер. В самом сценарии прописана выгрузка данных в ифлуксдб находящуюся на сервере и постоянно доступную.

При запуске одного контейнера всё работает как нужно.

Но при попытке увеличить нагрузку по средствам поднятия дополнительных контейнеров, столкнулся с проблемой того что данные в инфлуксе сохраняются только от одного контейнера.

Отсюда вопрос, есть ли возможность собирать данные с нескольких контейнеров в одной бд?
https://grafana.com/grafana/dashboards/9935
Тут эта задача решена. Если что-то не работает, пишите, или оформите баг в
https://github.com/polarnik/gatling-grafana-dashboard
источник