Size: a a a

QA — Load & Performance

2021 September 11

ВС

Вячеслав Смирнов... in QA — Load & Performance
Про генераторы так.
Надо подать нагрузку 40 000 в час. С одного генератора надо 800 потоков на это. А с 4-х уже по 200.

Так как каждый скрипт сам вычисляет сколько потоков и какой шаг понадобится, ему передается сколько генераторов есть всего, чтобы он потоки поделил на количество генераторов
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Вычисления нужны из-за того, что требования - сколько чего надо нагружать меняются, а пересчитывать таймеры каждый раз сложно было. Поэтому сделал такой расчет. Если требования не меняются, то можно не делать такой расчет.

И вторая причина. Вот решил подавать 40 000 в час. И это пусть 101 поток. А ступеней 5. Значит надо 20.2 потока на ступень. А столько не сделать. Делается 21. А ещё генераторов пусть 2. Значит надо 10.5 потоков. А сколько не сделать, значит 11.

Итого надо 11 на ступень, их 5 генераторов 2. 110 потоков. Значит шаг чуть больше будет, чем я хотел. Он немного корректируется и готово. Скрипт корректирует шаг и округляет потоки

Факторы
1) профиль в процентах
2) генераторы
3) количество шагов
Влияют на округление потоков

Потоки грубо считаются от
4) нужной интенсивности, с учётом 1) 2) 3)
5) примерного шага

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

В общем да. День на отладку ушёл
источник

АФ

Александр Фролов... in QA — Load & Performance
понял, спасибо!
источник

АФ

Александр Фролов... in QA — Load & Performance
частично схожую реализацию нашел у @Ganeles , Виктор спасибо за труд)
https://github.com/ganeles/JmeterSmartScenario
источник

VG

Viktor Ganeles in QA — Load & Performance
А как сделал динамическое количество ступеней?
В моём варианте я такого не добился
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Оно задаётся. Явно
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Тут как, изначальный профиль 40 000 в час рассчитан на 7 ступеней. Вот он делится на 7.

Это хардкод в данном случае.
Потому что даньше всегда делали тест на 7 ступеней.

В jenkins говорится, что надо 12 ступеней. Система стала быстрее, теперь надо 12. По 600 сек с разгоном 600 сек каждая. Вот этот тест будет дольше. На 7-й ступени будет работать с интенсивностью  40 000 в час

Можно и по другому сделать. Пока так для обратной совместимости. Но путано
источник

VG

Viktor Ganeles in QA — Load & Performance
Погоди, я вот чего не понимаю.
Как ты жметру передаёшь сколько ступеней будет?
Или у тебя это в jmx захардкожено?

Я слышал, что при запуске из консоли можно переопределять количество ступеней utg, заданное в gui, но сам не пробовал
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Ещё есть фича/баг. Некоторые катушки не видят даже Property, которые посчитаны в SetUpThread Group. Например, Stepping Thread Group.

Как создать Property в JMeter, но не в SetUpThread? Так чтобы она была видна всем ThreadGroup ещё в момент загрузки.

А можно. В jmeter.properties есть два параметра

beanShell.startupScript
jsr223.startupScript

Сделал расчет в groovy-файле, который указан в таком скрипте. Для jsr223

Минус такого подхода оказался в том, что если коллеги запускают редактирование скрипта не через mvn jmeter:gui а через открытие своего локального jmeter.bat, то в их файле jmeter.properties параметр startupScript не задан. И такая локальная отладка уже не работает.

И надо теперь всем настраивать maven, idea, ... Гнев, торг, ... принятие

И обходной вариант. Сделать выклбченную катушку Setup Thread Group, которая ссылается на этот же скрипт. И при локальной отладке включать ее и делать ей Validate. Property созданные таким образом не пропадают из памяти JMeter. То есть сначала их посчитать, а потом тест запускать
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Может и другие варианты есть, но так тоже сработало

Другой вариант прописывать код в Test Plan / Variables. Но не так удобно
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Тут используется плагин Stepping Thread Group.

В нем в качестве параметров
1) сколько потоков надо создать, пусть 110
2) по сколько добавлять, пусть по 21
3) длительность разгона 600
4) длительность ступени 600
5) длительность теста (20 минут*5 + немного )

Ступени не задаются в данной ThreadGroup, они используются только для расчёта
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
источник

АД

Антон Дзык in QA — Load & Performance
Всем доброго дня и отличной субботы :)

Кто подскажет? Можно ли в pandora запретить "патроны" по кругу гонять из raw формата? Типа если кончились - стопать тест(если даже по времени не дошло).
источник

jj

jagga jagga in QA — Load & Performance
Какие сложности вы придумываете
источник

jj

jagga jagga in QA — Load & Performance
Ищи разрабов пандоры и спрашивай напрямую
источник

jj

jagga jagga in QA — Load & Performance
Диревиуса например
источник

jj

jagga jagga in QA — Load & Performance
Могу неттортика пингануть
источник

AF

Andrey Filatov in QA — Load & Performance
Попробуй в конфиге "ammo" указать "passes: 1" (https://github.com/yandex/pandora/blob/develop/components/phttp/ammo/simple/raw/provider.go#L57)
источник

АД

Антон Дзык in QA — Load & Performance
спасибо
источник

VG

Viktor Ganeles in QA — Load & Performance
А, смотрел его
Мне редко когда нужно тест с нулевой нагрузки запускать

Я обычно уже знаю, что продуктивную нагрузку система держит и лезу вверх от неё
Или от другого известного мне значения

А в этой тредгруппе ступеньки с нуля всегда начинаются
источник