[Mongrel] monit vs mongrel cluster

Henry hpoydar at gmail.com
Sat Apr 7 10:54:11 EDT 2007


Ezra,

Would you mind sharing the portion of your monit.conf that handles  
the cluster?

Many thanks,
Henry


On Apr 3, 2007, at 6:28 PM, Ezra Zygmuntowicz wrote:

>
> 	Yes mongrel_cluster handles the pid files. Also it does a better job
> of stopping mongrels. The problem I had when I used monit and
> mongrel_rails without mongrel_cluster was that if a mongrel used too
> much memory monit woudl not be able to stop it sometimes and so
> execution woudl fail and timeout.
>
> 	Using mongrel_clutser avoids this problem completely. Trust me I've
> tried it all different ways. I did monit without mongrel_cluster for
> a about a full month on close to 200 servers and then switched them
> all to monit and mongrel_cluster and get much better results.
>
> -Ezra
>
> On Apr 3, 2007, at 3:00 PM, snacktime wrote:
>
>> Makes sense that mongrel_cluster would handle a lot of edge cases
>> better then monit.  Is it mainly the pid file handling that has been
>> the main issue so far?
>>
>> Have you tried daemontools?  Seems to me like it would be more
>> reliable since you wouldn't have to deal with pid files and
>> backgrounding mongrel.
>>
>> Chris
>>
>> On 4/3/07, Ezra Zygmuntowicz <ezmobius at gmail.com> wrote:
>>>
>>> On Apr 3, 2007, at 1:39 PM, snacktime wrote:
>>>
>>>> Is there anything mongrel cluster gives you that monit doesn't?
>>>> I'll
>>>> be using monit to monitor a number of other services anyways, so it
>>>> seems logical to just use it for everything including mongrel.
>>>>
>>>> Chris
>>>>
>>>
>>> Chris-
>>>
>>>         WHen you use monit you can still use mongrel_cluster to
>>> manage it.
>>> You need the latest pre release of mongrel_cluster. This is the best
>>> configuration I've been able to come up with for 64Bit systems. If
>>> your on 32bit system then you can lower the memory limits by about
>>> 20-30%
>>>
>>> check process mongrel_<%= @username %>_5000
>>>    with pidfile /data/<%= @username %>/shared/log/mongrel.5000.pid
>>>    start program = "/usr/bin/mongrel_rails cluster::start -C / 
>>> data/<%
>>> = @username %>/current/config/mongrel_cluster.yml --clean --only
>>> 5000"
>>>    stop program = "/usr/bin/mongrel_rails cluster::stop -C /data/<%=
>>> @username %>/current/config/mongrel_cluster.yml --clean --only 5000"
>>>    if totalmem is greater than 110.0 MB for 4 cycles then
>>> restart       # eating up memory?
>>>    if cpu is greater than 50% for 2 cycles then
>>> alert                  # send an email to admin
>>>    if cpu is greater than 80% for 3 cycles then
>>> restart                # hung process?
>>>    if loadavg(5min) greater than 10 for 8 cycles then
>>> restart          # bad, bad, bad
>>>    if 20 restarts within 20 cycles then
>>> timeout                         # something is wrong, call the sys-
>>> admin
>>>    group mongrel
>>>
>>> check process mongrel_<%= @username %>_5001
>>>    with pidfile /data/<%= @username %>/shared/log/mongrel.5001.pid
>>>    start program = "/usr/bin/mongrel_rails cluster::start -C / 
>>> data/<%
>>> = @username %>/current/config/mongrel_cluster.yml --clean --only
>>> 5001"
>>>    stop program = "/usr/bin/mongrel_rails cluster::stop -C /data/<%=
>>> @username %>/current/config/mongrel_cluster.yml --clean --only 5001"
>>>    if totalmem is greater than 110.0 MB for 4 cycles then
>>> restart       # eating up memory?
>>>    if cpu is greater than 50% for 2 cycles then
>>> alert                  # send an email to admin
>>>    if cpu is greater than 80% for 3 cycles then
>>> restart                # hung process?
>>>    if loadavg(5min) greater than 10 for 8 cycles then
>>> restart          # bad, bad, bad
>>>    if 20 restarts within 20 cycles then
>>> timeout                         # something is wrong, call the sys-
>>> admin
>>>    group mongrel
>>>
>>> check process mongrel_<%= @username %>_5002
>>>    with pidfile /data/<%= @username %>/shared/log/mongrel.5002.pid
>>>    start program = "/usr/bin/mongrel_rails cluster::start -C / 
>>> data/<%
>>> = @username %>/current/config/mongrel_cluster.yml --clean --only
>>> 5002"
>>>    stop program = "/usr/bin/mongrel_rails cluster::stop -C /data/<%=
>>> @username %>/current/config/mongrel_cluster.yml --clean --only 5002"
>>>    if totalmem is greater than 110.0 MB for 4 cycles then
>>> restart       # eating up memory?
>>>    if cpu is greater than 50% for 2 cycles then
>>> alert                  # send an email to admin
>>>    if cpu is greater than 80% for 3 cycles then
>>> restart                # hung process?
>>>    if loadavg(5min) greater than 10 for 8 cycles then
>>> restart          # bad, bad, bad
>>>    if 20 restarts within 20 cycles then
>>> timeout                         # something is wrong, call the sys-
>>> admin
>>>    group mongrel
>>>
>>>
>>>         I wen't for a while using my own scripts to start and stop
>>> mongrel
>>> without using mongrel_cluster. But it works more reliably when I use
>>> mongrel_cluster and monit together.
>>>
>>> Cheers-
>>> -- Ezra Zygmuntowicz
>>> -- Lead Rails Evangelist
>>> -- ez at engineyard.com
>>> -- Engine Yard, Serious Rails Hosting
>>> -- (866) 518-YARD (9273)
>>>
>>>
>>> _______________________________________________
>>> Mongrel-users mailing list
>>> Mongrel-users at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/mongrel-users
>>>
>> _______________________________________________
>> Mongrel-users mailing list
>> Mongrel-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/mongrel-users
>>
>
> -- Ezra Zygmuntowicz 
> -- Lead Rails Evangelist
> -- ez at engineyard.com
> -- Engine Yard, Serious Rails Hosting
> -- (866) 518-YARD (9273)
>
>
> _______________________________________________
> Mongrel-users mailing list
> Mongrel-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/mongrel-users



More information about the Mongrel-users mailing list