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.
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
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.
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.
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),
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
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.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.