Skip to content

Commit 7678be1

Browse files
committed
Add max redis response time for reads
1 parent d28ac39 commit 7678be1

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

src/config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ addDefaults(config, {
165165
commandsQueueMaxLength: 3000,
166166
stopWritingAfterResponseTime: 50,
167167
responseTimePause: 1000,
168+
maxReadResponseTime: 500,
168169
disableHashCache: false,
169170
clientCacheSize: 2000,
170171
useCompression: false,

src/types/config.model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ interface RedisConfig extends redis.RedisClientOptions {
1010
maxWriteConnections: number;
1111
stopWritingAfterResponseTime: number;
1212
responseTimePause: number;
13+
maxReadResponseTime: number;
1314
disableHashCache: boolean;
1415
clientCacheSize: number;
1516
useCompression: boolean;

src/utils/redis.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,12 @@ if (config.redis?.enabled) {
222222
return;
223223
}
224224

225+
if (config.redis.maxReadResponseTime && activeRequests > maxStoredTimes
226+
&& readResponseTime[readResponseTime.length - 1] > config.redis.maxReadResponseTime) {
227+
reject(new TooManyActiveConnectionsError(`Redis response time too high in general: ${readResponseTime[readResponseTime.length - 1]}ms with ${activeRequests} connections`));
228+
return;
229+
}
230+
225231
// For tracking
226232
if (!shouldClientCacheKey(key)) memoryCacheUncachedMisses++;
227233

0 commit comments

Comments
 (0)