StackExchange.Redis.RedisTimeoutException 执行 EXISTS 超时(自将 WebApp 移至 .NET8 以来)

问题描述 投票:0回答:1

我确定这里的问题不在于 StackExchange.Redis,而是我们的 Azure 应用服务配置/启动/设置中的某些内容。

我们多年来一直愉快地使用 StackExchange.Redis。我们将 Azure 应用服务迁移到 .NET 8,现在 Redis 非常慢并且经常出错:

Timeout performing EXISTS (5000ms), 
next: EXISTS XXX, 
inst: 10, qu: 0, qs: 0, 
aw: False, bw: SpinningDown, 
rs: ReadAsync, 
ws: Idle, in: 208, 
last-in: 0, cur-in: 0, sync-ops: 20932, 
async-ops: 1, 
serverEndpoint: XXX-XXXXX-REDIS-ECOM-PRD-1-STAGE.redis.cache.windows.net:6380, 
conn-sec: 64302.22, aoc: 0, mc: 1/1/0, 
mgr: 10 of 10 available, 
clientName: DW0MDWK0000LG(SE.Redis-v2.8.0.27420), 
IOCP: (Busy=0,Free=1000,Min=1,Max=1000), 
WORKER: (Busy=37,Free=32730,Min=2,Max=32767), 
POOL: (Threads=37,QueuedItems=64,CompletedItems=315273,Timers=29), 
v: 2.8.0.27420 

我的直觉是这在某种程度上与 Azure 应用程序的资源有关。

我可以增加超时,但 Redis 应该在远小于 5000 毫秒的时间内返回这些轻型查询。

我已尝试解释该错误消息,但未能成功。

Redis 向导可以解释一下吗?

redis stackexchange.redis
1个回答
0
投票

迁移到 Azure 应用服务上的 .NET 8 后,您似乎遇到了 StackExchange.Redis 的性能问题。您看到的超时错误和缓慢的响应时间令人沮丧,但有一些常见的罪魁祸首以及您可以采取的解决步骤。

了解错误消息 存在超时执行(5000ms):

这意味着 EXISTS 命令在 5 秒后超时。这表明您的应用程序和 Redis 服务器之间的通信存在延迟。 连接指标:

指标显示您的 Redis 连接和线程在预期范围内,因此不太可能是连接池问题。 客户端版本:

您使用的是 StackExchange.Redis v2.8.0.27420,它已经很旧了。较新的版本通常会带来性能改进和错误修复。 可能的原因和解决方案 资源限制:

检查您的 Azure 应用服务是否耗尽 CPU 或内存等资源。如果负载很重,请考虑扩展到更高的服务层。 网络延迟:

确保您的 Redis 实例和应用服务位于同一区域,以减少网络延迟。高延迟可能会导致超时。 连接池配置:

检查并调整您的 Redis 连接池设置。默认设置可能需要根据应用程序的工作负载进行优化。 Redis 服务器性能:

监控 Redis 服务器的性能。如果负载很重或配置错误,则可能会减慢响应时间。 应用程序更改:

自从您迁移到 .NET 8 后,请检查应用程序与 Redis 交互方式的任何更改是否可能影响性能。 升级 StackExchange.Redis:

考虑将 StackExchange.Redis 更新到更新版本。新版本可能会有一些改进,有助于解决性能问题。

© www.soinside.com 2019 - 2024. All rights reserved.