Rails + Joyent Accelerator Benchmark
March 14, 2007
Well, this is fun. Here’s the configuration:
- Joyent Accelerator 64-L — We stripped it down and built it back up with the bare minimum Blastwave packages we need to run our apps (surprisingly few).
- Rails 1.2.2 Application — Moderate DB complexity, loaded with fixture data, and using acts_as_ferret extensively. No optimization at all (caching, query tweaking, etc.).
- Mongrel 1.0.1 — Running in production mode as a cluster with 4 instances (I think the server has 4 processor cores).
- nginx 0.5.14 — Built from scratch, and running the generic Rails/Mongrel configuration found on the wiki.
- PostgreSQL 8.1.4 — Out of the box configuration from the Blastwave package (nothing special, no ANALYZE statements).
We’re seeing about 50 connections served per second, with 80% of pages delivered within 150ms, and zero dropped or failed connections. I’m pretty sure we can double that if we spent any time optimizing the application and server stack.
Not bad .. but the big fat caveat is that it’s 11:00 PM so our box obviously isn’t loaded very heavily. We can burst up to 95% CPU utilization on the machine, so of course these numbers don’t reflect reality of peak hours. That said, we’ve never seen load reported over 0.2, even during peak.
Update: I should note that the 50/sec rate is for a pretty dynamic application with some bells and whistles; connections for static content are in the hundreds per second, but not too applicable for our purposes.