Concurrency metrics and queue health

The Concurrency page now charts scheduling delay, backlog, and throttling for every queue and concurrency key, with live overrides and archiving for queues you no longer use.

Eric Allam

Eric Allam

CTO, Trigger.dev

Katia Bulatova

Katia Bulatova

Product Engineer, Trigger.dev

Scheduling delay is the gap between when a run could start and when it does. Once it passes a minute the chart turns amber, and the queue table underneath tells you which queue is stuck and what's capping it: your environment limit, a limit in your code, or an override.

Your whole environment on one screen

4 tiles sit at the top: Queued, Running, Allocated (the sum of every queue's limit, as a share of your environment limit) and your Environment limit with its burst headroom.

Under them, 4 charts cover the environment over the period you pick:

  • Env saturation: how much of your environment's concurrency is in use
  • Backlog: how many runs are waiting, over time
  • Scheduling delay p95: how long runs wait before they start, flagged once it passes 1 minute
  • Throttled: how often runs were held back by a limit

Hover one chart and the others follow. Drag across any of them to zoom in.

The queue table below tells you what's holding each queue back. Every row shows its limit and what set it (your environment, your code, or an override), a health state (Paused, At capacity, Backlogged, Active, Idle), its p95 delay and a backlog sparkline. It sorts busiest first, so the queue that needs you is at the top.

The same numbers are queryable with TRQL, our SQL-style query language, so you can chart queue depth or scheduling delay your own way and pin it to a custom dashboard.

Drill into a queue

Click a queue for its own page. The Overview tab charts running against the limit, queue depth, throughput (enqueued vs started, with a warning when it's falling behind), scheduling delay at p50, p95 and p99, and throttling. If the queue has a total limit, that gets its own chart.

A queue's Overview tab: running against the limit, queue depth, throughput, scheduling delay percentiles, and throttling.

The Concurrency keys tab is for multi-tenant workloads. It charts waiting runs and throughput for your 8 busiest keys, how many keys have a backlog, and the worst wait any key is seeing. Every key gets a row with its queued and running counts, oldest wait and mean delay, so the one tenant whose runs are piling up is easy to find.

The Concurrency keys tab: waiting runs and throughput per tenant, with one tenant's backlog climbing behind its per-key limit.

Fix it from the same page

The controls for acting on a queue now sit on this page too. Pause a queue to stop new runs without touching its limits, then Resume to let them go again. Override limit changes the per-key and total bounds right there with no deploy, and the override holds through later deploys until you choose Remove override.

Archive queues you don't use

Every deploy creates queues, and renamed queues or deleted tasks used to stay in the list forever. Choose Archive from a queue's menu to hide it. Archived queues stop counting towards Allocated, and Show archived brings them back into view.

Archiving only changes what the dashboard shows; runs and limits behave exactly as before. You can only archive a queue your current deployment no longer declares, and only while it's idle and not paused. If a later deploy declares it again, it comes back on its own.

The full archiving rules are in the queues docs, and all of the above is under Concurrency in the sidebar of every environment.

Ready to start building?

Build and deploy your first task in 3 minutes.

Get started now