class ClusteredRpc::Info
Public Class Methods
get_uptime()
click to toggle source
# File lib/clustered_rpc/info.rb, line 36 def self.get_uptime Open3.capture3("ps", "-p", Process.pid.to_s, "-o", "etime=").first.split("\n").first end
lookup_process_type(sc = startup_command)
click to toggle source
# File lib/clustered_rpc/info.rb, line 40 def self.lookup_process_type(sc = startup_command) process_type = if (sc == "script/rails []") || (sc == "bin/rails []") || ( sc =~ /spring app/) "Rails Console" elsif (sc =~ /sidekiq/) "Sidekiq" elsif (sc =~ /puma/) "Web Server" elsif (sc =~ /rspec/) "Rspec" elsif sc =~ /scheduler/ "Resque Scheduler" elsif sc =~ /resque:work/ "Resque Worker" elsif sc =~ /rules:redis/ "Rules Engine" else sc end process_type end
memory_used()
click to toggle source
# File lib/clustered_rpc/info.rb, line 32 def self.memory_used (((100.0 * (`ps -o rss -p #{$$}`.strip.split.last.to_f / 1024.0)).to_i) / 100.0) end
startup_command()
click to toggle source
# File lib/clustered_rpc/info.rb, line 28 def self.startup_command "#{$0} #{$*}" end
stats(detailed_memory_stats = false)
click to toggle source
# File lib/clustered_rpc/info.rb, line 8 def self.stats(detailed_memory_stats = false) require 'objspace' r = { instance_id: ClusteredRpc.instance_id, transport_class: ClusteredRpc.transport_class.name.to_s, options: ClusteredRpc.options, process_id: Process.pid, uptime: get_uptime, used_mb: memory_used, startup_command: startup_command, process_type: lookup_process_type(startup_command), count_nodes: ObjectSpace.count_nodes, } if detailed_memory_stats r[:count_objects_size] = ObjectSpace.count_objects_size r[:gc] = GC.stat end r end