Size: a a a

QA — Load & Performance

2020 October 30

KY

Kirill Yurkov in QA — Load & Performance
ну главное разобрались
источник

KY

Kirill Yurkov in QA — Load & Performance
как мне кажется это все не наглядно для новичка
источник

KY

Kirill Yurkov in QA — Load & Performance
исходя из того что прочитал выше, тут проблема в подходе. @Hasuni - вы оперируете тредами, но в 99% случаев правильнее оперировать запросами в секунду, а треды лишь способ их достижения. чтобы правильно нагрузить сервис нужно на протяжении какого-то времени подавать на него определенное количество запросов в секунду, похожее на то количество которое делают реальные пользователи в сумме. дело в том что приложению все равно, 10 пользователей сделают 100 запросов в сек, 1 пользователь или 10 тысяч юзеров
источник

KY

Kirill Yurkov in QA — Load & Performance
потому вам нужны таймеры в тред группе, которые будут регилировать нагрузку. простейший - throughput timer.
далее в треды нужно внести столько сколько необходимо для генерации подобной нагрузки + небольшой запас. есть формула:
треды = суммарное максимальное время отклика * необходимое кол-во запросов в сек

итог можно умножить например на два или три чтобы точно хватило
источник

KY

Kirill Yurkov in QA — Load & Performance
и тогда вы более менее правильно будете подавать нагрузку, ограничивать потоки 1 секундой не нужно, распределять запросы по тредам тоже
источник

KY

Kirill Yurkov in QA — Load & Performance
если специфика есть - надо учитывать
источник

ЕЗ

Екатерина Зарембо... in QA — Load & Performance
Как я могу с помощью одного потока создать нагрузку единомоментную в 1000 запросов, например🤔
Они же последовательно будут создаваться
источник

AF

Artem Fedorov in QA — Load & Performance
Все верно, последовательно. Но надо понять единомоментно это какой промежуток времени?
источник

KY

Kirill Yurkov in QA — Load & Performance
если запрос выполняется 1 мс,  то они все успеют произойти за 1 сек)
источник

KY

Kirill Yurkov in QA — Load & Performance
поэтому в формуле есть время отклика
источник

KY

Kirill Yurkov in QA — Load & Performance
Kirill Yurkov
если запрос выполняется 1 мс,  то они все успеют произойти за 1 сек)
ровно тысяча
источник

KY

Kirill Yurkov in QA — Load & Performance
и ровно 1 поток)
источник

ЕЗ

Екатерина Зарембо... in QA — Load & Performance
Но они же не единомоментно придут, а придут друг за другом.
То есть нагрузка будет не единомоментная. То есть за 1 мс пройдет запрос, а там уже следующий придет, например.
Или не имеет смысла устанавливать цель на такую точность попадания запросов прямо в одно время
источник

KY

Kirill Yurkov in QA — Load & Performance
в реальности запросы тоже не попадают в 1 момент, шанс такого попадания невероятно низкий. представьте тысяча пользователей нажмут в одну и ту же миллисекунду кнопку у них будет одинаковая скорость сети и чувствительность мыши
источник

KY

Kirill Yurkov in QA — Load & Performance
и фактически даже если их 1000 в систему придет совсем не факт что все тысяча параллельно начнут отрабатывать
источник

ЕЗ

Екатерина Зарембо... in QA — Load & Performance
Окей. Поэтому все промежутки в Jmeter с максимальной точностью - секунда :D
Но один пользователь может не успеть создать требую нагрузку. Например, он зависнет. В реальности параллельно еще кто-от что-то будет писать...
1 тред и 1000 запросов не то же, что в 2 и 500...
Ну, или я что-то не понимаю)
источник

KY

Kirill Yurkov in QA — Load & Performance
Еще перед системой может стоять балансировщик - у него своя степень параллельности, у вашей системы своя, в конечном итоге все упрется в количество ядер,  которые дают реальную параллельность, остальные операции там последовательны
источник

KY

Kirill Yurkov in QA — Load & Performance
Екатерина Зарембо
Окей. Поэтому все промежутки в Jmeter с максимальной точностью - секунда :D
Но один пользователь может не успеть создать требую нагрузку. Например, он зависнет. В реальности параллельно еще кто-от что-то будет писать...
1 тред и 1000 запросов не то же, что в 2 и 500...
Ну, или я что-то не понимаю)
а с какой стороны мы смотрим? со стороны приложения тоже самое
источник

KY

Kirill Yurkov in QA — Load & Performance
мы смотрим не самый лучший пример на самом деле, на нем я пытался логику инструмента рассказать, а не о крутой практике в нагрузке поведать
источник

ЕЗ

Екатерина Зарембо... in QA — Load & Performance
Так...
Например, у меня время отклика - 200 мс.
Требуемая нагрузка, например, 1000 запросов в секунду.
Получается треды = 200 * 1000 = 200 000
источник