class Sidekiq::Launcher

def check_rtt

def check_rtt
  a = b = 0
  redis do |x|
    a = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, :microsecond)
    x.ping
    b = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC, :microsecond)
  end
  rtt = b - a
  RTT_READINGS << rtt
  # Ideal RTT for Redis is < 1000µs
  # Workable is < 10,000µs
  # Log a warning if it's a disaster.
  if RTT_READINGS.all? { |x| x > RTT_WARNING_LEVEL }
    logger.warn <<~EOM
      Your Redis network connection is performing extremely poorly.
      Last RTT readings were #{RTT_READINGS.buffer.inspect}, ideally these should be < 1000.
      Ensure Redis is running in the same AZ or datacenter as Sidekiq.
      If these values are close to 100,000, that means your Sidekiq process may be
      CPU-saturated; reduce your concurrency and/or see https://github.com/sidekiq/sidekiq/discussions/5039
    EOM
    RTT_READINGS.reset
  end
  rtt
end