Функция сна в k6 приостанавливает выполнение всех виртуальных пользователей или только одного пользователя одновременно? - PullRequest
0 голосов
/ 09 апреля 2020

Я новичок в использовании https://k6.io для нагрузочного тестирования, и мне было интересно узнать о поведении функции sleep.

Сейчас я построил нагрузочный тест с несколькими этапами , В моей функции по умолчанию у меня есть несколько запросов (get и post), которые выполняются.

Я заметил, что если я выполняю их последовательно в течение нескольких минут, мое приложение, работающее на elasti c beanstalk, начинает замедляться и в итоге выдает 500 ошибок.

Однако, если я добавлю оператор sleep после каждого запроса следующим образом:


const getMe = http.get(`${appEndpoint}/me`, params)
check(getMe, {
  'me: status was 200': r => r.status == 200,
  'me: response time OK (under 500ms)': r => r.timings.duration < maxResponseTimeMs,
  });

sleep(Math.floor(Math.random() * 4) + 1)

// next request would follow below

Тогда я могу легко увеличить количество виртуальных пользователей в 10 раз без каких-либо проблем.

Поэтому мой вопрос заключается в следующем :

Вызывает ли sleep k6, чтобы приостановить ВСЕ запросы для всех виртуальных пользователей на это время ИЛИ просто ли он приостанавливает запросы от одного виртуального пользователя за один раз.

Как я понимаю это значит, что виртуальные пользователи - это всего лишь параллельное выполнение функции default, которая запускает ваш нагрузочный тест, поэтому вся функция приостанавливается для всех пользователей или для каждого пользователя.

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

Спасибо

1 Ответ

0 голосов
/ 09 апреля 2020

Вызывает ли sleep команду k6, чтобы приостановить ВСЕ запросы для всех виртуальных пользователей на это время ИЛИ просто приостановить запросы от одного виртуального пользователя за раз.

Ваш Интуиция верна: поскольку VU выполняют функцию default параллельно и изолированно друг от друга, вызов sleep() приостановит выполнение только для этого VU.

Поскольку вы спите в случайном порядке в течение 1-4 с между итерациями ваш сервер, скорее всего, сможет справиться со случайным количеством трафика c, тогда как отправка запросов с той скоростью, с которой ваш компьютер-тестер сможет их отправить, приведет к замедлению и 500 ошибкам. Во время тестирования вы узнаете, каков правильный баланс для вашей системы и что лучше всего подходит для вас.

Этот sleep() -ing метод полезен именно по этой причине, поэтому вы можете контролировать количество отправленных запросов. , Также обратите внимание на --rps параметр .

...