What are your experiences with Rails production stability?

Hi,

Where I work we're planning the development of a web-based
collaboration tool.
We are currently trying to figure out which kind of framework would be
the best for our purpose and have nailed the choices down to Django
and Rails. While we're all pretty convinced that Rails serves our
needs better, there are some serious concerns about its production
performance.

I DO NOT WANT THIS THE BECOME ANOTHER RAILS VS. DJANGO DEBATE but
would instead just like to hear some EXPERIENCES WITH RAILS
DEPLOYMENT. Problems or success stories, some numbers would be great
but I understand if you can't provide those.

What I'm especially interested in are the rumors of rails deployments
(apache2/mod_proxy_lb/mongrel) being so unstable that multiple
restarts a day are required and the amount of traffic that can
reasonably be served from a single, average server or a combination of
2 servers (app and db). The app will probably stay small scale for the
near future but there will be no (or not many) paying users either so
the popular (and in the presence of paying users perfectly reasonable)
answer of just adding more hardware doesn't apply as easily here.

Links to other resources on these topics are welcome as well of
course.

Thanks

Jan

Hi,

Where I work we're planning the development of a web-based
collaboration tool.
We are currently trying to figure out which kind of framework would be
the best for our purpose and have nailed the choices down to Django
and Rails. While we're all pretty convinced that Rails serves our
needs better, there are some serious concerns about its production
performance.

I DO NOT WANT THIS THE BECOME ANOTHER RAILS VS. DJANGO DEBATE but
would instead just like to hear some EXPERIENCES WITH RAILS
DEPLOYMENT. Problems or success stories, some numbers would be great
but I understand if you can't provide those.

What I'm especially interested in are the rumors of rails deployments
(apache2/mod_proxy_lb/mongrel) being so unstable that multiple

Well I can only talk about our apps, but I don't recall us ever having
to restart (outside of our regular updates) any bits of our servers

Fred

I know of many Rails apps that have been running for months without restarts.

I also know that some hosts have to bump Rails apps every 20 minutes because they leak memory. My suspicion is this has to do with coding proficiency and gems / plugins / libraries used. You know, the same problems any language has.

Rails is newer than PHP or Java, so it’s had to go through some deployment growing pains.

It also comes down to available resources. Rails is expensive in terms of memory. 25 to 100 MB memory usage per instance of Mongrel. If you try to run Mysql, apache, and four mongrel instances on a 128mb vps, you will probably have some downtime if you get any significant load.

A single instance of Mongrel can only handle one request at a time. That’s why you have more than one. Sounds scarier than it is, but because of that, a Rails app requires more resources to host than a PHP app. It’s a tradeoff right now. I can afford extra hosting if I can get my projects done in half the time. (I say half the time, and that’s my measurement. Looking back at similar projects I’ve done in ASP and PHP, Rails typically lets me get them done twice as fast),

The deployment book (http://www.pragprog.com/titles/fr_deploy) is a good start to getting something production-worthy going. The authors are all also great guys (shameless plug).

You are hearing a lot of rumors about Rails’ stability. I can assure you that if it wasn’t stable, people wouldn’t have stuck around this long. We have a vested interest in making it work :slight_smile:

Good luck!

I have a bunch of Rails apps out there -- admittedly relatively low volume:

One has been running for over a year without a restart (Apache proxying to mongrel/pound)
One has been running for over two years and the client has had no change requests (Apache proxying to lighttpd/fcgi)
Two only restart when I do a code pushes and have been live for (respectively) 18 months and 13 months (Apache/mod_proxy_balancer)

So my deployment scenarios are all over the map, but they are all surviving what's hitting them. I endured some pain getting deployment right for the first project, but all have been smooth since.

YMMV

Jan,

We haven't had any problems either but I think it really depends on
your hardware resources and what deployment stack you use. That is
where it can get tricky as there are so many but there are a few good
best practices well documented on the web.

I can highly recommend LiteSpeed, even the free version, as it has had
great performance, easy setup and simple to maintain/monitor (web
based). We haven't had to restart once in the last year and it takes
very little resources and offer very good performance. It has made
deployment and management simple since all moving parts are in one
place.

Though it is a bit more involved in the setup and management arena,
nginx + mongrel/evented_mongrel are an excellent performance
combination as well. Plus its open-source.