Created
October 12, 2009 18:03
-
-
Save defunkt/208588 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This will ride alongside god and kill any rogue memory-greedy | |
# processes. Their sacrifice is for the greater good. | |
unicorn_worker_memory_limit = 300_000 | |
Thread.new do | |
loop do | |
begin | |
# unicorn workers | |
# | |
# ps output line format: | |
# 31580 275444 unicorn_rails worker[15] -c /data/github/current/config/unicorn.rb -E production -D | |
# pid ram command | |
lines = `ps -e -www -o pid,rss,command | grep '[u]nicorn_rails worker'`.split("\n") | |
lines.each do |line| | |
parts = line.split(' ') | |
if parts[1].to_i > unicorn_worker_memory_limit | |
# tell the worker to die after it finishes serving its request | |
::Process.kill('QUIT', parts[0].to_i) | |
end | |
end | |
rescue Object | |
# don't die ever once we've tested this | |
nil | |
end | |
sleep 30 | |
end | |
end |
I think the idea is this code is basically concatenated to the normal unicorn.god config file, so it's running inside the god process.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I don't understand why you used a Thread.new here.