Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit e3bc461

Browse files
authored
Time external cache response time (#9904)
1 parent b85821a commit e3bc461

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

changelog.d/9904.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Time response time for external cache requests.

synapse/replication/tcp/external_cache.py

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import logging
1616
from typing import TYPE_CHECKING, Any, Optional
1717

18-
from prometheus_client import Counter
18+
from prometheus_client import Counter, Histogram
1919

2020
from synapse.logging.context import make_deferred_yieldable
2121
from synapse.util import json_decoder, json_encoder
@@ -35,6 +35,20 @@
3535
labelnames=["cache_name", "hit"],
3636
)
3737

38+
response_timer = Histogram(
39+
"synapse_external_cache_response_time_seconds",
40+
"Time taken to get a response from Redis for a cache get/set request",
41+
labelnames=["method"],
42+
buckets=(
43+
0.001,
44+
0.002,
45+
0.005,
46+
0.01,
47+
0.02,
48+
0.05,
49+
),
50+
)
51+
3852

3953
logger = logging.getLogger(__name__)
4054

@@ -72,23 +86,25 @@ async def set(self, cache_name: str, key: str, value: Any, expiry_ms: int) -> No
7286

7387
logger.debug("Caching %s %s: %r", cache_name, key, encoded_value)
7488

75-
return await make_deferred_yieldable(
76-
self._redis_connection.set(
77-
self._get_redis_key(cache_name, key),
78-
encoded_value,
79-
pexpire=expiry_ms,
89+
with response_timer.labels("set").time():
90+
return await make_deferred_yieldable(
91+
self._redis_connection.set(
92+
self._get_redis_key(cache_name, key),
93+
encoded_value,
94+
pexpire=expiry_ms,
95+
)
8096
)
81-
)
8297

8398
async def get(self, cache_name: str, key: str) -> Optional[Any]:
8499
"""Look up a key/value in the named cache."""
85100

86101
if self._redis_connection is None:
87102
return None
88103

89-
result = await make_deferred_yieldable(
90-
self._redis_connection.get(self._get_redis_key(cache_name, key))
91-
)
104+
with response_timer.labels("get").time():
105+
result = await make_deferred_yieldable(
106+
self._redis_connection.get(self._get_redis_key(cache_name, key))
107+
)
92108

93109
logger.debug("Got cache result %s %s: %r", cache_name, key, result)
94110

0 commit comments

Comments
 (0)