Inspired by Stack Exchange’s Architecture in Bullet Points. I have to admit that I was happy to see that we stack up pretty well, being a Ruby on Rails site. There’s no denying that Ruby is slower than C#. …and we could talk about Microsoft SQL Server vs MySQL as well.
It’s a little bit of an apples to oranges comparison. We’re a members only site that is mostly not indexed in Google and we’ve got a low unique visitor count and a high average time on the site. Also, we’re very, very budget conscious.
- 173 Million Page Views per Month (not including guests + sign in page views)
1600350 Rails requests per second (at peak times, requests for static files not included) whoa huge error there, 1600 reqs/sec just hitting Rails would be impressive. There were some static files included in that.
- ? DNS requests per second. My TTLs are set wicked high for most hostnames anyway.
- 180 Megabits per second at peak times (including static files)
- 1/2 rack with Hosted Solutions (Windstream), 3 internet connections
- 1U with RippleWeb for backup
- Amazon S3 for backup
All are SuperMicro boxes running Gentoo Linux. Most are dual CPU Xeons and they range from 4 years old to new. SSDs have helped me make the oldest servers new again.
- 4 application servers (Apache / Passenger / Ruby on Rails)
- 3 database servers (MariaDB, 1 is a low-powered slave for backups)
- 1 front end web server (nginx)
- 1 misc utility server / front end web server
- 1 caching proxy server for static files (nginx)
- 3 router / firewalls (2 x Cisco, 1 x pfSense)
The most powerful server is the newest database server – a Dual Xeon 5530 with 8 x SAS drives and 48 GB of RAM (all in 1U!). Obviously, we can’t scale up forever but our database + indices is about 220 GB and there are some easy opportunities for splitting big tables out into other servers.
Software and Technologies Used
I usually do a yearly “Ravelry Runs On” post but here are the bullets.
- Ruby on Rails
- MariaDB (a better MySQL)
- Phusion Passenger and REE
- Gentoo Linux
- haproxy for load balancing
- Sphinx for search
- memcached for caching
- Redis where it helps
- beanstalkd for a work queue
- also using Java for a couple number crunching background jobs
- Nagios for monitoring
- MRTG and Munin for graphing
- Git for source control
Developers and System Administrators
Here’s the part where I sound like an ass. It’s just me. I know that it will be healthier for the site (and for me, too!) to have a copilot. Maybe that’ll be in the cards for 2011.