God is a ruby based process monitor that has a reputation for leaking memory and hogging system resources. I have been considering replacing God with monit for some time. A couple of days ago I noticed a retweet by John Mettraux about a ruby debugging presentation by Aman Gupta. The presentation covers various debugging tools and gives a number of examples, including Eric Lindvall’s work debugging the God process monitor (slide 41). Obviously I had to try it and the following is my experience.
There didn’t seem to be any gems pushed so I clone the God github repository and built the gems locally.
$ gem install gemcutter $ gem tumble $ gem install god
UPDATE: Eric Lindvall pointed out that they had been on gemcutter for a few days, so if you aren’t already added gemcutter as a source you need to do the following.
The gems installed without problems and the new version didn’t brake my existing configuration. I noticed God was sending messages to syslog every time It checked a process. The message level command line flag didn’t seem to have any effect on this so I disabled syslog logging and just logged to a file. This may have also contributed to the improved performance. Bellow are my results after running for half a day.
God was obviously using considerable resources just to run.
The green represents memory used by applications. After upgrading God this is considerably decreased and doesn’t grow i.e. memory leaks seem to be fixed.