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
get_total_memory(workers = set_workers)
Alias for: get_total
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