2016-08-02 8 views
0

Новинка в мире Gatling, но опытный пользователь Loadrunner. Я создал образец моделирования для запуска двух сценариев, каждый из которых имеет 10 пользователей и хочет запустить его в течение 10 минут. Ниже приводится то, что у меня есть в моей функции setUp. Но каждый раз, когда я запускаю симуляцию, он работает только 136 секунд. HoldFor, похоже, не вступает в силу.Gatling Throttle holdfor не работает

setUp(
    scn.inject(rampUsers(10) over (10 seconds)), 
    scen.inject(rampUsers(10) over (10 seconds)) 
) 
.protocols(httpProtocol) 
.throttle(
    reachRps(2) in (10 seconds), 
    holdFor(10 minutes) 
) 

Я использую комплект Gatling 2.2.2.

Выход: Simulation computerdatabase.BasicSimulation completed in 136 seconds

+0

уточнения, 136 секунд приблизительное время, которое требуется, чтобы выполнить одну итерацию всех запросов, вызванных этими 10 + 10 пользователей , – CyberNinja

ответ

4

Дроссель работает как узкое, эффективно работать в качестве верхней границы для сколько запросов будет отправлено. Если ваши сценарии + профили инъекций не способны генерировать столько запросов, сколько вам хотелось бы, в первую очередь, те, которые генерируются, просто беспрепятственно проходят через дроссель. Дроссель не может увеличить нагрузку, чтобы соответствовать желаемому RPS, он может только уменьшить его.

Вам нужно будет ввести достаточное количество пользователей в свои сценарии, чтобы они могли генерировать 2 RPS, которые вы хотите, и продолжайте добавлять их больше в ходе моделирования, чтобы дроссель сделай то, что ищешь.

Попробуйте изменить профили впрыска, чтобы, например, что-то вроде этого (и отрегулируйте значение constantUsersPerSec по мере необходимости), я считаю, что это может дать вам нагрузку-профиль на шаг ближе к тому, что вы ищете:

scn.inject(constantUsersPerSec(1) during(10 minutes))), 
scen.inject(constantUsersPerSec(1) during (10 minutes))) 

в приведенном выше примере был просто очень быстрый и грязный способ, чтобы проиллюстрировать точку того, чтобы вводить пользователей в течение долгого времени, но как шанс было бы это, инъекционного 600 пользователей в общей сложности в течение 10 минут в сценарий является 10 пользователи каждые десять секунд и должны быть именно то, что вы хотите, если я не падаю прежде всего, в базовую арифметическую ошибку и/или непонимание.

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

scn.inject(
    rampUsers(10) over (1 minute), 
    constantUsersPerSecond(1) during (10 minutes) 
) 

Для другого подхода к более явно управлять пандус с течением времени, вы можете также играть с конфигурацией, как это:

scn.inject(
    splitUsers(600) into(rampUsers(10) over(10 seconds)) separatedBy(10 seconds) 
) 
+0

Спасибо. Я неправильно понял использование дросселирования. Я думаю, что ваш код будет включать около 600 пользователей (1 пользователь в секунду для 10 минут для 2 сценариев). Это не то, что я хочу. Моя цель состоит в том, чтобы загрузить 20 пользователей в тест за 10 секунд, а затем сохранить эти 20 в течение 10 минут, а затем отключиться. – CyberNinja

+0

Написал ответ в качестве комментария на начальном этапе, но он слишком долгое время. Вместо этого обновился ответ. –

+0

Этот ответ помог мне понять концепцию, отметив таким образом ответ на этот вопрос. – CyberNinja