Gatling defines a number of ways to define throughput profile for performance tests. Either through a number of arriving users:

    nothingFor(4 seconds), // 1
    atOnceUsers(10), // 2
    rampUsers(10) over(5 seconds), // 3
    constantUsersPerSec(20) during(15 seconds), // 4
    constantUsersPerSec(20) during(15 seconds) randomized, // 5
    rampUsersPerSec(10) to(20) during(10 minutes), // 6
    rampUsersPerSec(10) to(20) during(10 minutes) randomized, // 7
    splitUsers(1000) into(rampUsers(10) over(10 seconds)) separatedBy(10 seconds), // 8
    splitUsers(1000) into(rampUsers(10) over(10 seconds)) separatedBy(atOnceUsers(30)), // 9
    heavisideUsers(1000) over(20 seconds) // 10

or by limiting a number of requests per second:

  reachRps(100) in (10 seconds),
  holdFor(1 minute),
  holdFor(2 hours)

Where can I learn how to define a proper throughput profile for my application? What cases should I focus on? I know it might be specific for my application but maybe there some generic introduction for defining throughput?


I would recommend sticking to "reality" approach if it is possible, so ideally it will be scenario 1. Also consider using appropriate pauses to simulate real users think times as they don't hammer the application non-stop, they require some time before doing the next operation.

So I would rather go for "virtual users" as the approach and "throughput" as a metric, like "when X concurrent users use application it is able to serve Y requests per second", see What is the Relationship Between Users and Hits Per Second? for more detailed explanation.

The "RPS" approach may be required if you're directly asked to measure it, like "according to SLA we need to serve X requests per second with response time not more than Y".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.