[Mongrel] monit vs mongrel cluster

Ezra Zygmuntowicz ezmobius at gmail.com
Sun Apr 8 12:40:07 EDT 2007


Henry-

	That is what it quoted earlier in this email. Here is the monitrc  
for one mongrel using mongrel_cluster:

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  --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


	You need one of those entries for each mongrel you need to run.

Cheers-
-Ezra


On Apr 7, 2007, at 7:54 AM, Henry wrote:

> 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
>
> _______________________________________________
> 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)




More information about the Mongrel-users mailing list