Skip to content

Commit

Permalink
ensure puma has responded to decrement signal
Browse files Browse the repository at this point in the history
  • Loading branch information
schneems committed Apr 6, 2014
1 parent 8704d40 commit 652787f
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
7 changes: 3 additions & 4 deletions lib/puma_auto_tune/defaults/ram/hooks.rb
Expand Up @@ -19,7 +19,7 @@

# Called when puma is using too much memory
auto.set(:out_of_memory) do |memory, master, workers|
if workers.size > 1 && PumaAutoTune.max_worker_limit > 1
if workers.size > 1
largest_worker = workers.last # ascending worker size
auto.log "Potential memory leak. Reaping largest worker", largest_worker_memory_mb: largest_worker.memory
largest_worker.restart
Expand Down Expand Up @@ -49,9 +49,8 @@

# Called to remove 1 worker from pool. Sets maximum size
auto.set(:remove_worker) do |memory, master, workers|
if workers.size > 1 && PumaAutoTune.max_worker_limit > 1
PumaAutoTune.max_worker_limit = workers.size if PumaAutoTune::INFINITY == PumaAutoTune.max_worker_limit
PumaAutoTune.max_worker_limit -= 1
if workers.size > 1
PumaAutoTune.max_worker_limit = workers.size - 1
auto.log "Cluster too large. Resizing to remove one worker"
master.remove_worker
auto.call(:reap_cycle)
Expand Down
4 changes: 4 additions & 0 deletions lib/puma_auto_tune/master.rb
Expand Up @@ -10,7 +10,11 @@ def running?

# https://github.com/puma/puma/blob/master/docs/signals.md#puma-signals
def remove_worker
previous_worker_count = workers.size
send_signal("TTOU")
until workers.size < previous_worker_count
sleep 0.1
end
end

# https://github.com/puma/puma/blob/master/docs/signals.md#puma-signals
Expand Down

0 comments on commit 652787f

Please sign in to comment.