Как настроить время замедления в гатлинге?

У меня есть сценарии jmeter для увеличения 20 пользователей в течение 20 минут (1 пользователь каждую минуту), удержания в течение 30 минут и снижения 1 пользователя в минуту.

Как мне добиться этого в Гатлинге?

Я пробовал ниже настройки в гатлинге,

SAAPIBase.scn_SA_Auth.inject(rampUsers(20) during (20 minutes)).protocols(httpConf)
).maxDuration(50 minutes)

Это увеличивает 20 пользователей на 20 минут и удерживает 30 минут с 20 пользователями. Но после этого вдруг падает до нуля.

Как постепенно уменьшать количество пользователей на 1 на 1 каждую минуту?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
3 315
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обратите внимание на то, насколько продолжительность выполнения симуляции сильно зависит от сценариев, которые вы выполняете — все этапы внедрения Gatling DSL управляют началом работы пользователей когда, и это все. Поэтому, если у вас есть сценарии, которые очень долго выполняются или непредсказуемы, трудно гарантировать что-то точно такое, как вы указали.

В вашем примере

.inject(rampUsers(20) during (20 minutes)).protocols(httpConf)
).maxDuration(50 minutes)

вы вводите 20 пользователей равномерно в течение 20 минут (по одному в минуту). Если это действительно удерживается в течение 30 минут после рампы, то ваши сценарии, вероятно, зацикливаются, и пользователи останавливаются оператором maxDuration.

для замедления вы можете изменить впрыск на

.inject(
  rampConcurrentUsers(1) to(20) during(20 minutes),
  constantConcurrentUsers(20) during (30 minutes),
  rampConcurrentUsers(20) to(1) during(20 minutes)
)

это даст вам такое же увеличение в течение 20 минут, затем будет продолжать вводить пользователей, пока другие заканчивают поддерживать 20 одновременных пользователей в течение следующих 30 минут, а затем постепенно замедлять скорость внедрения в течение последних 20 минут. Однако, если ваш сценарий использует циклы, такие как .forever, для продолжения работы, это постепенное снижение не будет работать, поскольку пользователи, введенные в 1-ю команду, никогда не остановятся.

Привет Джеймс, Спасибо, это помогает мне. Но как уточняющий вопрос. Мне нужно ввести время задержки перед запуском. Я делаю, как показано ниже: scn_x.inject( ничего для (5 секунд), от рампыConcurrentUsers (1) до (3) в течение (12 минут), ConstantConcurrentUsers (3) в течение (30 минут), от рампыConcurrentUsers (3) до (1) в течение ( 12 минут)).протоколы(OWSAPIBase.httpConf_prod). Но я получаю сообщение об ошибке: «Неявное не найдено для доказательства параметра $ 1: InjectionProfileFactory [продукт с серийным номером]

Madasamy M 10.06.2019 21:17

что должен работает... можете ли вы опубликовать точный фрагмент кода?

James Warr 11.06.2019 05:05

Я попробовал следующее, и все, что я вижу, это либо плоская пользовательская инъекция, либо нарастание, без сглаживания чего-либо. Я позаботился о том, чтобы не было вечности или циклов, которые могли бы помешать пользователям остановиться. setUp(scenario.inject(rampConcurrentUsers(1) to (10)) в течение (1 минуты),sInjection(10000): _* ).protocols(httpconf)

PloniStacker 09.12.2019 08:06

def sInjection(повторяет: Int) = { var seq = Seq[ClosedInjectionStep](rampConcurrentUsers(10) to (1) в течение (1 минуты)) var i = Repeats while (i > 0) { seq = seq ++ Seq(rampConcurrentUsers (1) до (10) в течение (1 минуты)) seq = seq ++ Seq(rampConcurrentUsers(10) to (1) в течение (1 минуты)) seq = seq ++ Seq(constantConcurrentUsers(1) в течение (1 минуты) ) я -= 1 } след }

PloniStacker 09.12.2019 08:06

Gatling не убивает пользователей из-за изменений в профиле инъекции — они просто контролируют, когда будут запущены новые пользователи. Поэтому, когда вы укажете rampConcurrentUsers (10) to (1) during (1 minute), гатлинг запустит 10 пользователей, а затем попытается постепенно добавить новых пользователей, чтобы количество одновременных пользователей оставалось на уровне 10, затем 9 и т. д. Так что, если ваш сценарий занимает больше минуты, вы никогда не увидите постепенное снижение.

James Warr 10.12.2019 00:22

Другие вопросы по теме