09 Mar 2026 10:01 AM - edited 09 Mar 2026 10:02 AM
Learn how to calculate and visualize throughput (Requests per Second / Transactions per Second) using Dynatrace metrics. This article explains which metrics to use, how RPS is derived, and how to build clean throughput tiles for performance and load-testing scenarios. It includes how to validate the math and common mistakes (rate vs count, aggregation, time buckets).
Throughput answers the “how many requests happened per unit time?” question. It is typically expressed as RPS (requests per second) or TPS (transactions per second). A closely related, and often more useful in practice, metric is the failure rate, which answers “how many requests fail per unit time?” or “what percentage fails?”. A metric you often see in SLO-style tiles.
In Dynatrace you can build these in two ways. Either via Explore metrics (Dashboards/Notebooks) with the built-in Rate and Interval controls. Or, in DQL timeseries command using the rate:… parameter inside the metric.
In the following sections we are going to look at both. To experience throughput first hand try the complementing examples on the Dynatrace playground dashboard within the "Throughput: Understanding RPS/TPS metrics" section.
Most “throughput confusion” is simply mixing these up:
Dynatrace makes rate normalization explicit:
💡Dashboard hygiene tip: If you label the tile “RPS”, make sure Rate → Per second is set; otherwise, you’re showing “requests per bucket”.
Setting the unit:
Result (try it on this Dynatrace playground dashboard):
Same steps as above, but pick the failure count metric and set Rate → Per second.
If you want “% failed”, compute it as Failure % = 100 × (failures / total requests).
In Explore, add the two metrics, Failures and Total requests, then create an Expression to calculate the percentage.
Failure throughput per second (canonical example)
Dynatrace’s DQL examples show per-second failure rate for a specific endpoint using rate:1s (normalization):
timeseries sum(dt.service.request.failure_count, rate:1s),
filter:{startsWith(endpoint.name, "/api/accounts")}
❗Note: service metrics collect one-minute granularity request data and show per-minute counts by default, so rate:1s is what turns it into per-second. The rate parameter is formally defined as “divide by interval to normalize to a duration”.
Interval definition and behavior are documented in Explore metrics, and the link to DQL timeseries behavior is explicit.
If your tile says “RPS/TPS”, ensure the rate is set in.
If you’re still doing throughput views in Data Explorer (previous Dynatrace), it also has a Rate control with Per second, Per minute, Per hour options. For details, refer to the official Data Explorer documentation about rate: https://docs.dynatrace.com/docs/shortlink/explorer#rate
Featured Posts