How to set a time-limit for mongrel?

Hi,

we have a problem with a small-sized Rails application. It is
currently in productive use, and sometimes the customer reports
unavailability of the application.

Today I could watch one of these occasions live and connect to the
server while the application was down. Both mongrel servers were using
100% cpu and a wast amout of memory, they seemed to be blocked by some
large operation (probably a bug in some report generating
functionality of the application)

I don’t see any chance to fix the bug soon, so my question is, how can
I set a time-limit on those mongrel servers?

The configuration:

  • Linux Debian
  • Apache mod_proxy
  • 2 Mongrel servers

Somehow mongrel should be restarted, when one request takes more time
than 1 minute. I don’t see a way to do this. Any help would be greatly
appreciated.

  • Andi

I don’t see any chance to fix the bug soon, so my question is, how can
I set a time-limit on those mongrel servers?

I don’t have the answer, so this isn’t a very helpful post! Back in my
.asp days, we’d set a Server.Timeout to a given number of seconds.
This sort of thing would work for you.

On mongrel.rubyforge.org, there’s some stuff about “Ability to specify
a timeout throttling setting and a max number of concurrent
connections with additional attempts at cleaning dead threads out”.

  1. Look at your code. Find out what’s causing the mongrels to misbehave.
    More often than not it’s a code problem.

  2. Are you using RMagick? That’s caused me some problems.

  3. Use Monit. There are some great resources for mongrel + monit. You
    can
    use monit to stop / restart mongrels after various conditions occur.

http://www.igvita.com/blog/2006/11/07/monit-makes-mongrel-play-nice/

http://software.pmade.com/blogs/ramblings/2006/12/27/mongrel-cluster-and-monit

Thanks for your answers.

I will try monit, it sounds promising.