Update: Apache and Lighttpds and Mongrels, oh my!
June 11th, 2007
This is an update to my original post from April on my Rails benchmarking. See this URL for the original.
I have uploaded a more complete PDF of my results from the benchmarks, along with some pretty graphs and stuff.
To recap:
We have 7 different combinations of web server, connector and application server:
Apache 2.2+mod_proxy_balancer+mongrel_cluster
Apache 2.2+CGI/mod_cgi
Lighttpd 1.4+ SCGI+rails_scgi_cluster
Apache 2.0+FastCGI+Rails FCGI
Lighttpd 1.4+mod_proxy_balancer+mongrel_cluster
Lighttpd 1.4+FastCGI+Rails FCGI
Apache 2.2+CGI/mod_cgid
We had 2 separate test rounds:
Test Round 3 consists of executing 500 non-cached queries against LibraryFind. Because the queries are not going to hit the cache, they will take much more time for each individual query to complete, so we are getting an idea of how well this particular combination of webserver/appserver handle concurrent sessions.
Test Round 4 consists of executing 500,000 cached queries against LibraryFind. Because the queries are cached, the back-end remote OAI queries are eliminated, so we are testing just the speed of the actual webserver/appserver/database. Because only the webserver/appserver combinations are changing, we can eliminate the database as a variable. The database is otherwise idle during these tests.
Non-Cached Test Duration: (Test Round 3)
Non-Cached Transaction Rate: (Test Round3)
As you can see from the above graph, of the 7 variations the Apache 2.2/mod_proxy_balancer/mongrel_cluster instance on the far left completed fastest and had the highest number of transactions per second, by nearly 25% over its closest competitor, Apache/FastCGI.
Cached Test Duration: (Test Round 4)
Cached Transaction Rate: (Test Round 4)
Again, with Test Round 4 it is clear that our Apache 2.2/mod_proxy_balancer/mongrel_cluster combination beats out the competition.
People have also asked me for more information on the actual setups of Apache, etc., which I will post soon as well.
Lastly, Terry has added support for memcached to replace the SQL session store that seems to be broken with multiple mongrel instances, so I will try to do some comparison benchmarks to see how much memcached speeds things up.
Posted by rordway
