Помещение
- Rest API в scala / spray
- Простой метод, который всегда возвращает ОК
- Я стараюсь достичь в среднем 20 тыс. Запросов в секунду
- Обе машины (тестирующая и протестированная) хорошо настроены (выделенные серверы EC2, каждый со своим API и Gatling, файлы конфигурации sudo sysctl -w net.ipv4.ip_local_port_range = "1025 65535" echo 300000 | sudo tee / proc / sys / fs / nr_open echo 300000 | sudo tee / proc / sys / fs / file-max, /etc/security/limits.conf, ulimit -a -> 65535)
Это мой простой сценарий тестового файла, всего 1 пользователь:
setUp(scn.inject(constantUsersPerSec(1) during(60 seconds)))
.throttle(
//reachRps(20000) in (60 seconds),
//holdFor(1 minute)
//,
jumpToRps(20000),
holdFor(1 minutes)
)
.protocols(httpConf)
Я пытаюсь достичь 20k rqs (максимум) за 60 секунд или сразу перескакиваю на 20k и поддерживаю его в течение 1 минуты.
Это всегда мои результаты после выполнения скрипта Гатлинга:
Simulation finished Parsing log file(s)... Parsing log file(s) done Generating reports... ================================================================================ ---- Global Information -------------------------------------------------------- > request count 60 (OK=60 KO=0 ) > min response time 0 (OK=0 KO=- ) > max response time 2 (OK=2 KO=- ) > mean response time 1 (OK=1 KO=- ) > std deviation 0 (OK=0 KO=- ) > response time 50th percentile 1 (OK=1 KO=- ) > response time 75th percentile 2 (OK=2 KO=- ) > mean requests/sec 1.017 (OK=1.017 KO=- ) ---- Response Time Distribution ------------------------------------------------ > t 800 ms t > 1200 ms 0 ( 0%) > failed 0 ( 0%)
Я не понимаю, что именно означают эти результаты ... или, возможно, я не настраиваю правильный сценарий для своей цели.
Я пробовал несколько сценариев:
//setUp(scn.inject(atOnceUsers(20000)).protocols(httpConf))
//setUp(scn.inject(Users(200000).ramp(10)).protocols(httpConf))
//setUp(scn.inject(constantUsersPerSec(20000) during(1 seconds)).protocols(httpConf))
//setUp(scn.inject(constantUsersPerSec(20000) during(1 seconds))).protocols(httpConf)
//setUp(scn.inject(rampUsers(1500) over (60 seconds)))
//setUp(scn.inject(atOnceUsers(50000)))
// .throttle(jumpToRps(50000),
// holdFor(1 minutes))
// .protocols(httpConf)
setUp(scn.inject(constantUsersPerSec(1000) during(30 seconds)))
.throttle(
reachRps(20000) in (30 seconds),
holdFor(1 minute)
//,
//jumpToRps(20000),
//holdFor(1 minutes)
)
.protocols(httpConf)
Итак, я не знаю, как настроить мой тестовый файл scala для простого получения такого значения:
> mean requests/sec 20000 (OK=20000 KO=- )