Now what is Ebb?
Connections are processed as follows:
- libev loops and waits for incoming connections.
- When Ebb receives a connection, it passes the request into the mongrel state machine which securely parses the headers.
- When the request is complete, Ebb passes the information to a user supplied callback.
- The Ruby binding supplying this callback transforms the request into a Rack compatible
envhash and passes it on a Rack adapter.
The graph describes performance of a simple rack application and compares Ebb to mongrel, evented mongrel and thin. I’m more interested in performance with a Rails application and decided to do a benchmark for that.
In my benchmark I used the same application I used for my previous benchmark, only this time I benchmarked some extra pages.
Page 1 is a heavily cached page with few dynamic elements
Page 2 is a less cached page with a bit more dynamic elements
Page 3 is a non-cached page with an N+1 performance issue.
Ebb was tested using version 0.0.3, while Thin was on version 0.7.0. Both were run in a cluster of 4 behing nginx as a load balancer.
Interestingly Ebb managed to outperform Thin by about 10% on every page.