![Zombies on a train](http://dl.dropbox.com/u/2670385/Web/zombie.jpeg) Guaranteed zombie passengers death. - passenger process no longer listed in passenger-status ? => Death - high CPU load over long period (Optional) ? => Death strace of killed zombies is printed, so debugging is easier. (god/bluepill are not suited to monitor passenger apps because of ever-changing pids) Add passenger-status to `/etc/sudoers` or run with sudo. Install ======= sudo gem install zombie_passenger_killer Usage ===== zombie_passenger_killer [options] Options: -m, --max [SIZE] Max high CPU entries in history before killing (default: off) --history [SIZE] History size (default: 5) -c, --cpu [PERCENT] Mark as high CPU when above PERCENT (default: 70) -g, --grace [SECONDS] Wait SECONDS before hard-killing (-9) a process (default: 5) -i, --interval [SECONDS] Check every SECONDS (default: 10) -p, --pattern [PATTERN] Find processes with this pattern (default: ' Rack: ') -r, --rvm-sudo Use `rvmsudo` to see passenger-status -h, --help Show this -v, --version Show Version -t, --time Show time in output ### Bluepill script app.process("zombie_passenger_killer") do |process| process.start_command = "zombie_passenger_killer --max 5 --history 10 --cpu 30 --interval 10" process.stdout = process.stderr = "/var/log/autorotate/zombie_passenger_killer.log" process.pid_file = "/var/run/zombie_passenger_killer.pid" process.daemonize = true end ### Monit script check process zombie_killer with pidfile "/var/run/zombie_passenger_killer.pid" start program = "/bin/bash -c 'export PATH=$PATH:/usr/local/bin HOME=/home;zombie_passenger_killer --max 5 --history 10 --cpu 30 --interval 10 &>/var/log/zombie_passenger_killer.log & &>/dev/null;echo $! > /var/run/zombie_passenger_killer.pid'" stop program = "/bin/bash -c 'PIDF=/var/run/zombie_passenger_killer.pid;/bin/kill `cat $PIDF` && rm -f $PIDF'" group zombie_killer ### God script # TODO Author ====== ###Contributors - [Roman Heinrich](https://github.com/mindreframer) - [Kevin Mullin](https://github.com/kmullin) [Michael Grosser](http://grosser.it)
michael@grosser.it
Hereby placed under public domain, do what you want, just do not hold me accountable...