class PumaWorkerKiller::PumaMemory
Attributes
master[R]
Public Class Methods
new(master = nil)
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 5 def initialize(master = nil) @master = master || get_master @workers = nil end
Public Instance Methods
get_total(workers = set_workers)
click to toggle source
Will refresh @workers
# File lib/puma_worker_killer/puma_memory.rb, line 53 def get_total(workers = set_workers) master_memory = GetProcessMem.new(Process.pid).mb worker_memory = workers.values.inject(:+) || 0 worker_memory + master_memory end
Also aliased as: get_total_memory
largest_worker()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 42 def largest_worker largest_worker, = workers.to_a.last largest_worker end
largest_worker_memory()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 47 def largest_worker_memory _, largest_memory_used = workers.to_a.last largest_memory_used end
running?()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 28 def running? @master && workers.any? end
size()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 12 def size workers.size end
smallest_worker()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 32 def smallest_worker smallest, = workers.to_a.first smallest end
smallest_worker_memory()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 37 def smallest_worker_memory _, smallest_mem = workers.to_a.first smallest_mem end
term_largest_worker()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 20 def term_largest_worker largest_worker.term end
term_worker(worker)
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 16 def term_worker(worker) worker.term end
workers()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 60 def workers @workers || set_workers end
workers_stopped?()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 24 def workers_stopped? !running? end
Private Instance Methods
get_master()
click to toggle source
# File lib/puma_worker_killer/puma_memory.rb, line 66 def get_master ObjectSpace.each_object(Puma::Cluster).map { |obj| obj }.first if defined?(Puma::Cluster) end
set_workers()
click to toggle source
Returns sorted hash, keys are worker objects, values are memory used per worker sorted by memory ascending (smallest first, largest last)
# File lib/puma_worker_killer/puma_memory.rb, line 72 def set_workers workers = {} @master.instance_variable_get('@workers').each do |worker| workers[worker] = GetProcessMem.new(worker.pid).mb end if workers.any? @workers = Hash[workers.sort_by { |_, mem| mem }] else {} end end