Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
77 lines (55 sloc) 2.68 KB

Zombies on a train

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.


sudo gem install zombie_passenger_killer


zombie_passenger_killer [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: ')
    -1, --once                       Check once and exit
    --rvmsudo                        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/"
  process.daemonize = true

Monit script

check process zombie_killer
  with pidfile "/var/run/"
  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/'"
  stop program = "/bin/bash -c 'PIDF=/var/run/;/bin/kill `cat $PIDF` && rm -f $PIDF'"
  group zombie_killer

God script




Michael Grosser
License: MIT
Build Status

Something went wrong with that request. Please try again.