[ANNOUNCE] Akka 2.4.9-RC1 Released! (Akka HTTP Performance and Entity Streaming)

166 views
Skip to first unread message

Konrad 'ktoso' Malawski

unread,
Aug 2, 2016, 3:04:29 PM8/2/16
to Akka User List

Dear hAkkers,


We—the Akka committers—are pleased to be able to announce the availability of Akka 2.4.9-RC1.

This version is focused on Akka HTTP performance improvements as well as introducing the entity streaming feature which we’ll discuss below.


Highlights of the performance improvements include:


  • Overall Akka HTTP throughput and transfer rate has been improved by 30-40%

  • Performance is on-par or better than Spray.

    • Matching it both in raw throughput as well as latency distribution across a spectrum of request rates.

    • We measured an overall improvement of ~14% over Spray

  • Short lived connections throughput, which remains to be the worst-case scenario for Akka HTTP thought remains rare in the real world (due to connection pooling), has been doubled.

  • Given our EC2 infrastructure (m4.2xlarge instances) the server currently reaches a maximum of ~160.000 “ping / pong” requests per second (measured using 100 concurrent connections).


While we did not have the chance to benchmark using dedicated boxes this time, based on experience from previous Spray benchmark rounds we expect the top throughput to be much higher on actual hardware than it is on EC2.

One might want to remind remind oneself the good old post about Spray’s benchmarking results back in 2013 when it won a benchmarking round, achieving 30k reqs/sec on EC2 (m1.large) and 197k reqs/sec on dedicated i7 machines (using 256 connections).


This release also features a new feature that we think Streaming API authors will be delighted to see: EntityStreamingSupport.

It makes marshalling of Akka Streams into/from HTTP requests and responses as simple as adding enabling streaming and calling complete(tweets), given tweets was a Source[Tweet, _].

Learn more about it in the Entity Streaming section of the documentation.


We would like to encourage Akka HTTP users to try out this Release Candidate and provide feedback or report regressions if you find any.

API has remained largely unchanged, though the usual experimental module incompatibility caveat still remains so upgrading should be simple.

You may want to refer to the migration guide, as some classes moved to more appropriate places. A stable 2.4.9 should follow shortly after we’ve gathered some community feedback.

Next steps for Akka HTTP

Having that said, we’ll want to officially announce the end-of-life of Spray and confidently request users to upgrade to Akka HTTP.

Yes, this means we’ll soon be lifting the experimental flag from Akka HTTP.

The exact timeline for this is yet to be decided, as we want to discuss with the community about the best way to go about this.


The other question that is on everyone’s minds is one about HTTP/2.

We’d like to announce that we’ll spend some time working on an HTTP/2 Proof-of-Content within a few months.

You can follow our sprint plans on akka-meta be up to date about our sprint plans and progress.



Credits:

commits added removed

  39    5753    1748 Konrad `ktoso` Malawski

  11     693     239 Johan Andrén

   7     828     295 Endre Sándor Varga

   6     776     410 Hawstein

   5     171      81 Nafer Sanabria

   2       4       4 kenji yoshida

   2      55      22 Alexander Golubev

   2     111       3 Stefano Bonetti

   2      41      12 Richard Imaoka

   1      25       0 Lev Khomich

   1      41      15 Łukasz Dubiel

   1      54      22 Ian Clegg

   1      37      22 priyanka

   1      53      18 Nikolay Donets

   1     202       1 Richard S. Imaoka

   1       2       3 Jacek Kunicki

   1       2       2 abesanderson

   1       7       2 Alexei

   1       6       6 Thomas Szymanski

   1       1       0 Vadim Semenov

   1     246       7 Peter Barron

   1      16       7 Tim Harper

   1      40       0 Ivan Lorenz

   1       1       1 Morton Fox

   1       1       1 Yaroslav Klymko

   1       2       2 Alexandre Tamborrino

   1      20       0 Harit Himanshu




In this patch release we closed 43 tickets, and got the help from 24 contributors, thanks a lot!

The complete list of closed tickets can be found in the 2.4.9-RC1 milestone on GitHub.


Happy hakking!


Jim Hazen

unread,
Aug 3, 2016, 5:36:17 PM8/3/16
to Akka User List
Some quick feedback on raw iron performance, on my local workstation.  Your mileage my vary, but I'm pretty happy with these numbers.


wrk -d30 -c100 -t12 http://localhost:8080/hello
Running 30s test @ http://localhost:8080/hello
  12 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.15ms   12.36ms 309.76ms   97.72%
    Req/Sec    21.98k     4.54k   39.19k    75.18%
  7827755 requests in 30.08s, 1.28GB read
Requests/sec: 260269.56
Transfer/sec:     43.69MB

Thanks Akka Team!  Been looking forward to this for a long time.

Jason B

unread,
Aug 3, 2016, 6:17:29 PM8/3/16
to Akka User List
Got this error after upgrading Akka versions in sbt build file from 2.4.8 to 2.4.9-RC1, and attempting to integrate JSON Streaming functionality. I'm not using javadsl in any capacity. Seems related to the migration note on javadsl, but I am only using scaladsl in my code. An issue with the Maven artifacts?

[error] missing or invalid dependency detected while loading class file 'JsonEntityStreamingSupport.class'.
[error] Could not access type JsonEntityStreamingSupport in value akka.http.javadsl.common,
[error] because it (or its dependencies) are missing. Check your build definition for
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
[error] A full rebuild may help if 'JsonEntityStreamingSupport.class' was compiled against an incompatible version of akka.http.javadsl.common.
[error] missing or invalid dependency detected while loading class file 'EntityStreamingSupport.class'.
[error] Could not access type EntityStreamingSupport in value akka.http.javadsl.common,
[error] because it (or its dependencies) are missing. Check your build definition for
[error] missing or conflicting dependencies. (Re-run with `-Ylog-classpath` to see the problematic classpath.)
[error] A full rebuild may help if 'EntityStreamingSupport.class' was compiled against an incompatible version of akka.http.javadsl.common.

Konrad Malawski

unread,
Aug 3, 2016, 6:20:19 PM8/3/16
to akka...@googlegroups.com, Jason B
Hi Jason,
sadly the sbt-osgi plugin did something rather silly (I went in and fixed the plugin today) breaking the release if Java Marshallers are used.
See here for details and workaround: https://github.com/akka/akka/issues/21105 

Thanks for trying out the release candidate and thanks for your understanding - sorry that it's dead-on-arrival.
A stable 2.4.9 is coming any day now – that will work then.

We did a ReleaseCandidate this time as we weren't sure about some changes, glad we did an RC because indeed one of them turned out to be a problem.

-- 
Konrad 'ktoso’ Malawski
Akka @ Lightbend
java.pl / geecon.org / krakowscala.pl / lambdakrk.pl / 
sckrk.com
--
>>>>>>>>>> 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 a topic in the Google Groups "Akka User List" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/akka-user/hloXojMgCJ4/unsubscribe.
To unsubscribe from this group and all its topics, send an email to akka-user+...@googlegroups.com.
To post to this group, send email to akka...@googlegroups.com.
Visit this group at https://groups.google.com/group/akka-user.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages