Skip to content
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Rack Queue Metrics

Report on queued connections in any Rack-based server using Raindrops and the Raindrops::Linux features.


First, add rack-queue-metrics to your Gemfile:

gem 'rack-queue-metrics'


You're done! If you want to instrument queue metrics beyond the default output, you can subscribe to the rack.queue-metrics notifcation in your Rails app. For example, to print queue information to your logs, add the following to `config/initializers/notifcations.rb:

# config/initializers/notifications.rb
ActiveSupport::Notifications.subscribe(/rack.queue-metrics/) do |*args|
  event =*args)
  payload = event.payload

  addr = payload[:addr]
  active = payload[:requests][:active]
  queued = payload[:requests][:queued]
  queue_time = payload[:queue_time]

  puts "STATS addr=#{addr} active=#{active} queued=#{queued} queue_time=#{queue_time} "

For more information, see the ActiveSupport::Notification docs.

Sinatra/Rack Apps

Include the Raindrops and Rack::QueueMetrics middleware in your application's

  use Raindrops::Middleware
  use Rack::QueueMetrics::Middleware


With every request, rack-queue-metrics will output a log line with the the following format:

at=metric measure=rack.queue-metrics addr= queue_time=0 queue_depth=0


The following information is sent in the notification payload:

  • requests[:active]: Number of requests currently being processed by the dyno at the start of the request
  • requests[:queued]: Number of requests waiting to be processed at the start of the request
  • queue_time: Amount of time the current request spent in the queue
  • addr: Address of the dyno processing the request
Something went wrong with that request. Please try again.