Cannot reach the RPS when I inject only 1 user

I am doing the load test for our system started with 1 user, but I never reach that expected RPS, it is way less than the expected.
Below is the snippet of my scenario:

val loadTest = scenario("Load test")
  .during(emitDuration seconds) {
    exec(publish)
      .exitHereIfFailed
      .pause(0 milliseconds, 100 milliseconds)
  }
  .inject(
    atOnceUsers(1)
  )
  .throttle(reachRps(500) in (0 seconds),
    holdFor(300 seconds))


How can I reach the expected RPS by using only one user? Thanks!

I had asked similar question few weeks ago on StackOverflow (https://stackoverflow.com/questions/38710828/gatling-throttle-holdfor-not-working)

The throttle works as a bottleneck, effectively working as an upper boundary for how many requests will be sent. If your scenarios + injection profiles aren’t able to generate as many requests as you would like in the first place, the ones that are generated simply pass through the throttle unhindered. The throttle cannot increase the load to match the desired RPS, it can only decreases it.

You will need to inject enough users into your scenarios for them to be able to generate the 2 RPS you want in the first place, and keep adding more of them over the course of the simulation, in order for the throttle to do what you are looking for.