summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2018-05-22 09:31:53 +0100
committerErik Johnston <erik@matrix.org>2018-05-22 09:31:53 +0100
commitfb2806b1868baaa24d0d6e21d10f2c1f6177717e (patch)
tree4072fa3e8cb5ff16e3ef84a2fb670a8b3e904247
parentAdd in flight request metrics (diff)
downloadsynapse-fb2806b1868baaa24d0d6e21d10f2c1f6177717e.tar.xz
Move in_flight_requests_count to be a callback metric
-rw-r--r--synapse/http/request_metrics.py31
1 files changed, 21 insertions, 10 deletions
diff --git a/synapse/http/request_metrics.py b/synapse/http/request_metrics.py

index f1e9b41fde..8cb23f4d64 100644 --- a/synapse/http/request_metrics.py +++ b/synapse/http/request_metrics.py
@@ -124,12 +124,8 @@ in_flight_requests_db_sched_duration = metrics.register_counter( "in_flight_requests_db_sched_duration_seconds", labels=["method", "servlet"] ) -_in_flight_requests_count = metrics.register_gauge( - "in_flight_requests_count", labels=["method", "servlet"] -) - -# The set of all in flight requests. +# The set of all in flight requests, set[RequestMetrics] _in_flight_requests = set() @@ -138,20 +134,35 @@ def _collect_in_flight(): the in flight request metrics """ + for rm in _in_flight_requests: + rm.update_metrics() + + +metrics.register_collector(_collect_in_flight) + + +def _get_in_flight_counts(): + """Returns a count of all in flight requests by (method, server_name) + + Returns: + dict[tuple[str, str], int] + """ + # Map from (method, name) -> int, the number of in flight requests of that # type counts = {} - for rm in _in_flight_requests: - rm.update_metrics() key = (rm.method, rm.name,) counts[key] = counts.get(key, 0) + 1 - for (method, name), count in counts.iteritems(): - _in_flight_requests_count.set(count, method, name) + return counts -metrics.register_collector(_collect_in_flight) +metrics.register_callback( + "in_flight_requests_count", + _get_in_flight_counts, + labels=["method", "servlet"] +) class RequestMetrics(object):