Hi,
First I want to thank everyone who’s worked on gatling. I’m a sysadmin who’s struggling to try and test the maximum QPS an API can handle and gatling has been my constant friend for the last few days. However, having said that, I’m running into problems and it’s hard for me to determine if the issue is gatling or the service. I simply can’t get above ~4000 mean requests/sec no matter what I do. Here’s my current conf tweaks:
allowPoolingConnections = true
And I’ve been tweaking and tinkering with:
package nroute
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._
class BasicSimulation extends Simulation {
val httpConf = http
.baseURL(“http://10.124.151.134:8280”)
.maxConnectionsPerHost(1000)
.shareConnections
val tsvFeeder = tsv(“test2.json”, rawSplit = true).random
val time:Int = 120
val scn = scenario(“BasicSimulation”)
.during(time) {
feed(tsvFeeder)
.exec(http(“Send JSON”)
.post("/mopub")
.body(StringBody("${record}"))
.asJSON)
}
setUp(
scn.inject(
atOnceUsers(50)
)
).protocols(httpConf)
}
My test2.json is a single entry, like:
record
{json]
I’ve also been testing with a test.json that’s a 2G file of entries selected by random, but the results are identical. My questions are:
1/ What is the “best way” to simulate 1, then 50, non-human users posting events as fast as possible. That’s the only real thing I want to test, it simulates our use case best. No browsers will be hitting this. I think in the real world it’s going to open a single connection, using keep-alive, and just blast events in a constant stream as fast as they can be handled.
2/ What is the fastest mean average/sec people have seen, am I hitting some limits of gatling here?
Anything that would help me improve my testing would be VERY much appreciated as I’ve been bumping my head against this all week trying to working out the best way to test as fast as possible.