On one of my development servers mongrel dies when idle for any length
of time. Since I''ve not been able to solve that problem I thought
I''d
route around it by using monit to kick things when necessary.
My monitrc contains the following...
--------------------------------------------------------------------------------
check process mongrel_8310 with pidfile
/home/valleyc/apps/cms/dev/current/log/mongrel.8310.pid
group mongrel
start program = "/usr/local/bin/mongrel_rails cluster::start -C
/home/valleyc/apps/cms/dev/current/config/mongrel_cluster.yml --clean
--only 8310"
stop program = "/usr/local/bin/mongrel_rails cluster::stop -C
/home/valleyc/apps/cms/dev/current/config/mongrel_cluster.yml --clean
--only 8310"
if failed host 127.0.0.1 port 8310 protocol http
with timeout 10 seconds
then restart
if totalmem > 128 Mb then restart
if cpu is greater than 60% for 2 cycles then alert
#if cpu > 90% for 5 cycles then restart
#if loadavg(5min) greater than 10 for 8 cycles then restart
if 3 restarts within 5 cycles then timeout
--------------------------------------------------------------------------------
If I run the start command manually it works fine. When run via monit
however it seems unable to find mongrel_rails....
# monit validate
''mongrel_8310'' process is not running
''mongrel_8310'' trying to restart
''mongrel_8310'' start: /usr/local/bin/mongrel_rails
''mongrel_8310'' failed to start
starting port 8310
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:
command not found: mongrel_rails start -d -e production -a 127.0.0.1
-c /home/valleyc/apps/cms/dev/current --user valleyc --group valleyc
-p 8310 -P /home/valleyc/apps/cms/dev/current/log/mongrel.8310.pid -l
log/mongrel.8310.log
No amount of $PATH fiddling seemed to help, so for now I''ve patched
mongrel_cluster''s init.rb by changing line 62 (of version 1.0.1.1)
from this...
argv = [ "mongrel_rails" ]
to this...
argv = [ "/usr/local/bin/mongrel_rails" ]
...which works, but seems less than ideal. Any suggestions for a
better way to fix this without messing with the mongrel_cluster code
would be appreciated.
Thanks,
Jack
--
--------------------------------------------------------------------------------
Jack Baty http://jackbaty.com/ (616) 822-5800
Fusionary http://fusionary.com/ (616) 454-2357
820 Monroe N.W. Suite 212
Grand Rapids, MI 49503
Hi, This is likely because monit nukes the majority of the environment variables for security reasons (including the path) See http://www.tildeslash.com/monit/doc/faq.php (Q6) for more info. Easiest way around it is to call mongrel_rails from a shell script that sets the environement beforehand. - Paul On 27/02/07, Jack Baty <jbaty at fusionary.com> wrote:> On one of my development servers mongrel dies when idle for any length > of time. Since I''ve not been able to solve that problem I thought I''d > route around it by using monit to kick things when necessary. > > My monitrc contains the following... > > -------------------------------------------------------------------------------- > check process mongrel_8310 with pidfile > /home/valleyc/apps/cms/dev/current/log/mongrel.8310.pid > group mongrel > start program = "/usr/local/bin/mongrel_rails cluster::start -C > /home/valleyc/apps/cms/dev/current/config/mongrel_cluster.yml --clean > --only 8310" > stop program = "/usr/local/bin/mongrel_rails cluster::stop -C > /home/valleyc/apps/cms/dev/current/config/mongrel_cluster.yml --clean > --only 8310" > > if failed host 127.0.0.1 port 8310 protocol http > with timeout 10 seconds > then restart > > if totalmem > 128 Mb then restart > if cpu is greater than 60% for 2 cycles then alert > #if cpu > 90% for 5 cycles then restart > #if loadavg(5min) greater than 10 for 8 cycles then restart > if 3 restarts within 5 cycles then timeout > -------------------------------------------------------------------------------- > > If I run the start command manually it works fine. When run via monit > however it seems unable to find mongrel_rails.... > > # monit validate > ''mongrel_8310'' process is not running > ''mongrel_8310'' trying to restart > ''mongrel_8310'' start: /usr/local/bin/mongrel_rails > ''mongrel_8310'' failed to start > starting port 8310 > /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27: > command not found: mongrel_rails start -d -e production -a 127.0.0.1 > -c /home/valleyc/apps/cms/dev/current --user valleyc --group valleyc > -p 8310 -P /home/valleyc/apps/cms/dev/current/log/mongrel.8310.pid -l > log/mongrel.8310.log > > No amount of $PATH fiddling seemed to help, so for now I''ve patched > mongrel_cluster''s init.rb by changing line 62 (of version 1.0.1.1) > from this... > > argv = [ "mongrel_rails" ] > > to this... > > argv = [ "/usr/local/bin/mongrel_rails" ] > > ...which works, but seems less than ideal. Any suggestions for a > better way to fix this without messing with the mongrel_cluster code > would be appreciated. > > Thanks, > > Jack > > -- > -------------------------------------------------------------------------------- > Jack Baty http://jackbaty.com/ (616) 822-5800 > Fusionary http://fusionary.com/ (616) 454-2357 > 820 Monroe N.W. Suite 212 > Grand Rapids, MI 49503 > _______________________________________________ > Mongrel-users mailing list > Mongrel-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/mongrel-users >
> > > On 27/02/07, Jack Baty <jbaty at fusionary.com> wrote: > > > > # monit validate > > ''mongrel_8310'' process is not running > > ''mongrel_8310'' trying to restart > > ''mongrel_8310'' start: /usr/local/bin/mongrel_rails > > ''mongrel_8310'' failed to start > > starting port 8310 > >fwiw I did this. start program = "/usr/bin/env PATH=/opt/local/bin:$PATH mongrel_rails cluster: :start -C ..." -------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/mongrel-users/attachments/20070227/fc8a0ed4/attachment.html
> > fwiw I did this. > > start program = "/usr/bin/env PATH=/opt/local/bin:$PATH mongrel_rails > cluster: > :start -C ..."Works lovely, thanks for that. -- -------------------------------------------------------------------------------- Jack Baty http://jackbaty.com/ (616) 822-5800 Fusionary http://fusionary.com/ (616) 454-2357 820 Monroe N.W. Suite 212 Grand Rapids, MI 49503