class RooOnRails::Sidekiq::ProcessScaling
Constants
- WORKER_DECREASE_THRESHOLD
- WORKER_INCREASE_THRESHOLD
Public Class Methods
new(queue_latencies)
click to toggle source
# File lib/roo_on_rails/sidekiq/process_scaling.rb, line 11 def initialize(queue_latencies) @queue_latencies = queue_latencies @queue_names = @queue_latencies.map(&:name) end
Public Instance Methods
current_processes()
click to toggle source
# File lib/roo_on_rails/sidekiq/process_scaling.rb, line 16 def current_processes ::Sidekiq::ProcessSet.new.count do |process| process['quiet'].to_s == 'false' && @queue_names.any? do |queue_name| process['queues'].include?(queue_name) end end end
max_normalised_latency()
click to toggle source
# File lib/roo_on_rails/sidekiq/process_scaling.rb, line 25 def max_normalised_latency @queue_latencies.any? ? @queue_latencies.map(&:normalised_latency).max.to_f : 0.0 end
requested_processes()
click to toggle source
# File lib/roo_on_rails/sidekiq/process_scaling.rb, line 29 def requested_processes if max_normalised_latency > WORKER_INCREASE_THRESHOLD current_processes + 1 elsif max_normalised_latency < WORKER_DECREASE_THRESHOLD [current_processes - 1, 1].max else current_processes end end