We—the Akka committers—are pleased to be able to announce the availability of Akka 2.4.9. We would like to thank everyone who tested the Release Candidates, such that now we’re confident in releasing this version. This version is focused on Akka HTTP and Akka Streams performance improvements as well as introducing the entity streaming feature which we’ll discuss below but also contains bugfixes and general improvements.
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).
Streaming performance of fused islands have been also improved, resulting in 20-30% speedup of elements processed per second (for more extreme scenarios the improvement range is between 10%-100%). This is due to one optimization that speeds up the common case of long push-pull loops, and also due to a memory layout reorganization that reduces indirect load pressure on the CPU inside the GraphInterpreter main loop, the workhorse of Akka Streams.
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.
The Akka HTTP 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.
With the release of Akka 2.4.9 we would like to announce that we’ll soon be going forward with marking Akka HTTP a stable module! While doing so, there is a number of improvements and re-organisation we will want to apply during this process. Please read the proposal in akka/akka-meta#27, which includes splitting Akka HTTP into its own repository and other changes to ease its maintenance and evolution. This process will be very open and we would like to invite you to help us in it, as we’d love to see Akka HTTP become more and more driven by the community. It is somewhat of an an experiment we’re embarking on and it needs your participation to become really successful.
Credits: Commits added removed 40 5772 1754 Konrad Malawski 23 1107 422 Johan Andrén 9 833 305 Endre Sándor Varga 8 878 419 Hawstein 8 215 112 Nafer Sanabria 5 217 76 Patrik Nordwall 4 132 10 Stefano Bonetti 3 175 25 Richard Imaoka 2 4 11 matsu-chara 2 57 25 Ian Clegg 2 55 22 Alexander Golubev 2 5 5 abesanderson 2 12 2 Schmitt Christian 2 4 4 kenji yoshida 1 7 2 Alexei 1 8 0 Adam Warski 1 1 1 Morton Fox 1 20 0 Harit Himanshu 1 25 0 Lev Khomich 1 203 52 svezfaz 1 1 1 Yaroslav Klymko 1 7 1 Mike Bryant 1 37 22 priyanka 1 202 1 Richard S. Imaoka 1 1 1 Todd Ginsberg 1 12 3 Abe Sanderson 1 6 6 Thomas Szymanski 1 246 7 Peter Barron 1 1 0 Vadim Semenov 1 6 6 Kirill Plyashkevich 1 2 2 Josep Prat 1 5 5 Lukasz Kusek 1 2 3 Jacek Kunicki 1 41 15 Łukasz Dubiel 1 40 0 ivan-lorenz 1 2 2 Alexandre Tamborrino 1 98 2 Shivansh Srivastava 1 2 2 skchrko 1 53 18 Nikolay Donets 1 16 7 Tim Harper
In this patch release we closed 80 tickets, and got the help from 36 community contributors, thanks a lot! The complete list of closed tickets can be found in the following milestones on GitHub:
– The Akka Team