class SidekiqHerokuScaler::Strategy::Latency

Attributes

dec_count[R]
inc_count[R]
max_dynos_count[R]
max_latency[R]
min_dynos_count[R]
min_latency[R]

Public Class Methods

new(min_dynos_count:, max_dynos_count:, max_latency:, min_latency:, inc_count: nil, dec_count: nil) click to toggle source
# File lib/sidekiq-heroku-scaler/strategy/latency.rb, line 8
def initialize(min_dynos_count:, max_dynos_count:,
               max_latency:, min_latency:,
               inc_count: nil, dec_count: nil)
  @min_dynos_count = min_dynos_count
  @max_dynos_count = max_dynos_count
  @max_latency = max_latency
  @min_latency = min_latency
  @inc_count = (inc_count || 1).to_i
  @dec_count = (dec_count || 1).to_i
end

Public Instance Methods

decrease?(sidekiq_worker) click to toggle source
# File lib/sidekiq-heroku-scaler/strategy/latency.rb, line 25
def decrease?(sidekiq_worker)
  sidekiq_worker.latency < min_latency && sidekiq_worker.quantity > min_dynos_count
end
increase?(sidekiq_worker) click to toggle source
# File lib/sidekiq-heroku-scaler/strategy/latency.rb, line 19
def increase?(sidekiq_worker)
  sidekiq_worker.quantity < max_dynos_count &&
    sidekiq_worker.latency > max_latency &&
    sidekiq_worker.queues_size > sidekiq_worker.quantity * sidekiq_worker.concurrency
end
safe_quantity(quantity) click to toggle source
# File lib/sidekiq-heroku-scaler/strategy/latency.rb, line 29
def safe_quantity(quantity)
  return 1 if quantity <= 0

  quantity > max_dynos_count ? max_dynos_count : quantity
end