是什么导致Azure Redis缓存中的RedisTimeoutException?

问题描述

我有一个运行2个实例的Azure应用服务,该服务利用了共享的Azure Redis缓存。大部分时间 都很好。但是有几天,我在App Service日志中看到RedisTimeoutException错误。通常情况下,写入(SETEX)上会有一个超时,紧随其后的是大约10个以上的超时,这些超时是读和写的混合(我认为其他操作排在超时之后)。

示例:

StackExchange.Redis.RedisTimeoutException: Timeout awaiting response 
(outbound=0KiB,inbound=1KiB,5984ms elapsed,timeout is 5000ms),command=SETEX,next: GET <Key_name>,inst: 0,qu: 0,qs: 14,aw: False,rs: ReadAsync,ws: Idle,in: 0,serverEndpoint: <Azure_Redis_instance>,mc: 1/1/0,mgr: 10 of 10 available,clientName: <App_service_instance>,IOCP: (Busy=0,Free=1000,Min=2,Max=1000),WORKER: (Busy=2,Free=32765,Max=32767),v: 2.1.28.64774
(Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)

我在他们的异常消息中遵循了URL,并通读了他们对可能的超时原因的解释,但我不认为这些都是原因。 This subheading引起了我的注意,因为我确实在上面的例外中看到了qs: 14,但是我们没有使用任何会长时间运行的命令。我们仅使用键来设置/获取单个缓存条目。

在出现这些错误的过程中,我使用了Azure门户> App Service>度量标准刀片来查看App Service,但我看不到CPU时间,内存工作集或连接(在两个应用服务的实例)。我还检查了Redis Cache实例,没有发现内存或CPU使用率有任何峰值。

我不确定接下来要看什么。例如:

  1. 您会尝试使用他们的建议使用 ConnectionMultiplexer对象池来避免操作在缓慢的操作后排队吗? (我想知道为什么它很慢)
  2. 还有我要忽略的另一个关键绩效指标吗?
  3. 我没有看到mc: 1/1/0的解释,这是什么意思?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...