Not able to get RPS more than Users

I have started using gatling recently & seen this behaviour. To start with my application can scale upto 4000 tps which i have tested seperately using jmeter.
With gatling when i use 300 users, it translates to 300 RPS. When 400 users is used, translates to 400 rps and so on. Does it mean 1 user can return back only 1 rps? Would that mean i would need 4000 users to generate 4000rps?
Even with sync threads( of jmeter) 1 user was able to do close to 5 rps because my application takes about 200ms for 1 request.
Can you let me know what am i doing wrong here? I expect 300 users to translate to atleast 300*5( even if sync requests)

thank you,


package test
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class Delay_1sec extends Simulation {

val httpConf = http

val scn = scenario(“ScenarioName”)
.exec(http(“request_1”) // 8
.body(StringBody("""{ “myContent”: “my content” }""")).asJSON
.header(“Content-Type”, “application/json”)

scn.inject(constantUsersPerSec(300) during(900 seconds))
reachRps(4000) in (120 seconds),holdFor(900 seconds)

rampUsersPerSec(1) to (300) during(90 seconds),
constantUsersPerSec(300) during(900 seconds)
reachRps(4000) in (120 seconds),
holdFor(900 seconds)


Anyone had this issue and solved this?


Gatling is doing exactly what you asked it to do. You asked it to start 300 users per second. Each user starts up, does exactly one transaction, and then exits. Thus, if 300 transactions start per second, your requests per second are 300. Make sense?

To get higher throughput, you either need to increase your number of users, or allow each user to do multiple requests.

allow each user to do multiple requests.
what is the right way to do it?

That i what i already did by including the thottle statement, right? I believe using 300 users and throttling to 4000RPS - Should have meant 300 users translating to 4000RPS. correct?

Throttle only injects pauses in order to SLOW DOWN to the specified rate. It will not speed things up to reach it. If you want 4,000 requests per second, and each user does one request, you will need to inject 4,000 users per second.