Double lower rps when running against https

Hi guys,

I’m using Gatling 2.3.1 for my tests. I have successfully ran 10000 RPS against http server with simple Get 200 endpoint (without any logic inside). But when I enable https on the same server and run the same scenario against https, I get max 5000 RPS. If i try to get more RPS, I receive next exception:

12:08:24.595 [DEBUG] i.g.h.a.AsyncHandler - Request ‘Warmup’ failed for user 53976
javax.net.ssl.SSLException: handshake timed out
at io.netty.handler.ssl.SslHandler.handshake(…)(Unknown Source)
Wrapped by: java.net.ConnectException: handshake timed out
at org.asynchttpclient.netty.channel.NettyConnectListener.onFailure(NettyConnectListener.java:168)
at org.asynchttpclient.netty.channel.NettyConnectListener$1.onFailure(NettyConnectListener.java:139)
at org.asynchttpclient.netty.SimpleFutureListener.operationComplete(SimpleFutureListener.java:26)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:512)
at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:505)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:484)
at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:425)
at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:122)
at io.netty.handler.ssl.SslHandler.notifyHandshakeFailure(SslHandler.java:1488)
at io.netty.handler.ssl.SslHandler.access$1100(SslHandler.java:162)
at io.netty.handler.ssl.SslHandler$5.run(SslHandler.java:1672)
at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38)
at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:120)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:399)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:464)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)

Could you please tell if such a decrease in performance when enabling https is ok?
And what can I do with this exception?

Thanks

Also I try to run gatling from two instances in parallel and I manage to get 6000 RPS from two gatling machines against https server.
But when I try to run 7000 RPS (3500 RPS per gatling instance), one of two machines start to consume much more RAM (from 300M when running on one instance to 4G) then usual and response time increases.

5000 rps from one box and 6000 rps from 2 boxes? You’re most likely saturating your infrastructure under load (app, network, etc).

Hi Stephane,

Thanks for reply.
Looks like I’ve found an issue.

Running on 1 instance (4 cores, 8G) 4000 RPS, I can see that opened connections during the test increase very fast from 55 to 28000 and fails with handshake timed out exception.

On bigger instance (8 cores, 16G) 8000 RPS, runs without exceptions and during same test has max 1300 opened connections.