Sha256: 128a3fadd97c53c9e36a0a8194acb0e3d3b021b6b6b9ecacf10eaa1f8d4663b2
Contents?: true
Size: 954 Bytes
Versions: 4
Compression:
Stored size: 954 Bytes
Contents
class Eye::Checker::ChildrenCount < Eye::Checker::Measure # check :children_count, :every => 30.seconds, :below => 10, :strategy => :kill_old # monitor_children should be enabled param :strategy, Symbol, nil, :restart, [:restart, :kill_old, :kill_new] def get_value process.children.size end def fire if strategy == :restart super else pids = ordered_by_date_children_pids pids = (strategy == :kill_old) ? pids[0...-below] : pids[below..-1] kill_pids(pids) end end private def kill_pids(pids) info "killing pids: #{pids.inspect} for strategy: #{strategy}" pids.each do |pid| if child = process.children[pid] child.schedule :stop, Eye::Reason.new("bounded #{check_name}") end end end def ordered_by_date_children_pids children = process.children.values children.sort_by { |ch| Eye::SystemResources.start_time(ch.pid).to_i }.map(&:pid) end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
eye-0.8.1 | lib/eye/checker/children_count.rb |
eye-0.8.celluloid15 | lib/eye/checker/children_count.rb |
eye-0.8 | lib/eye/checker/children_count.rb |
eye-0.8.rc | lib/eye/checker/children_count.rb |