Thanks for answering so quickly.
Indeed the performance is much better if I reuse tcp connections.

Before using ab I was stressing the app with Gatling which does not reuse 
connections between users. In order to simplify my demonstration I switched 
to ab without keepalive to keep the same scenario. I will have a look to 
wrk.

If I understand correctly the end of your answer, the use case which 
consist to open many tcp connections at the same time is currently not 
optimised by akka-http materialization and this is what I observe on my 
system when I reach a limit of around 1200 opening sockets/s, is that right 
?

Thanks again.


Le mardi 6 décembre 2016 10:51:56 UTC+1, Konrad Malawski a écrit :
>
> Your benchmark is likely unrealistic - it should use consistent 
> connections to give any kind of realistic numbers (clients always keep 
> connections).
> ab is also not the best tool around (hasn't been since a long time), 
> please try `wrk`.
>
> Your benchmark is effectively benchmarking materialization time of new 
> connections - which is a known worst case scenario foe Akka HTTP.
> We're in the middle of optimising this currently by the way, with faster 
> materialization, however it still is not realistic if you want to measure 
> RPS - then you should use ab with -k or use a proper tool like wrk.
>
> Happy hakking.
>
> -- 
> Konrad `ktoso` Malawski
> Akka <http://akka.io> @ Lightbend <http://lightbend.com>
>
> On 6 December 2016 at 10:42:42, Charley Kayser (kayser....@gmail.com 
> <javascript:>) wrote:
>
> Hi
>
> I'm testing akka-http and I try to measure how many concurrent connections 
> it can handle on my company's Linux VM (x86_64, 4 CPU).
> I use the simple http server implementation provided in the akka-http 
> documentation which you can find in the following github project created 
> for illustrating this ticket: https://github.com/jycr/simple-akka-http
>
> Using ApacheBench to stress the application (with option -c 2000), I 
> measure that the server can't handle more than around 1000 requests per 
> second.
> Without success I changed the following to try to go over this limit:
>
>    - updated the Linux settings to allow more than 4000 TCP concurrent 
>    connections (ulimit -n, sysctl net.core.somaxconn, ifconfig txqueuelen, 
>    sysctl net.core.netdev_max_backlog, sysctl net.ipv4.tcp_max_syn_backlog)
>    - set akka.http.server.max-connections to 2048
>    
> I used YourKit to monitor the app and I could see the number of open 
> sockets didn't go over the limit of 1200 open sockets per second. This 
> makes me think the problem could be located in akka-io or in some kind of 
> back-pressure feature which tell the underlying nio.Selector not to accept 
> too many connections at once.
>
> What am I missing here ? 
>
> Thanks for your help
>
> Attached a screenshot of YourKit showing the socket metrics
>
>
>
> <https://lh3.googleusercontent.com/-iYRnadJsvyI/WEaGyJbP_EI/AAAAAAABHvA/JZcloGEdjDsLXtEhmvWTU3P-VODyWkS6QCLcB/s1600/yourkit_sockets.png>
>
>
> --
> >>>>>>>>>> Read the docs: http://akka.io/docs/
> >>>>>>>>>> Check the FAQ: 
> http://doc.akka.io/docs/akka/current/additional/faq.html
> >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user
> ---
> You received this message because you are subscribed to the Google Groups 
> "Akka User List" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to akka-user+...@googlegroups.com <javascript:>.
> To post to this group, send email to akka...@googlegroups.com 
> <javascript:>.
> Visit this group at https://groups.google.com/group/akka-user.
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 
>>>>>>>>>>      Read the docs: http://akka.io/docs/
>>>>>>>>>>      Check the FAQ: 
>>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html
>>>>>>>>>>      Search the archives: https://groups.google.com/group/akka-user
--- 
You received this message because you are subscribed to the Google Groups "Akka 
User List" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to akka-user+unsubscr...@googlegroups.com.
To post to this group, send email to akka-user@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to