Stackexchange Redis 异常:写入消息时发生未知错误

问题描述

.Net core 2.1 web-api 使用下面的 redis nuget 包 "StackExchange.Redis" Version="2.1.55" 并连接到 Azure Redis P1 层,Redis 版本 4.0.14

在 appsettings.config 上,

"RedisConfiguration": { "ConnectionString": "mycache.redis.cache.windows.net:6380,password=$$$$$$$$$F543shkerXXXXXg=,ssl=True,abortConnect=False","数据库编号": 1 }

在执行负载测试时,

非常频繁地收到以下异常,尤其是在维持 50 个请求/秒的情况下。我们的应用程序部署在具有 3 个节点的 Azure 服务结构集群上。在任何服务器节点上均未观察到处理器/内存压力。

Message":"设置缓存值时Redis异常:未知 写入时发生错误 message","Level":"Error","ExceptionType":"StackExchange.Redis.RedisConnectionException

"Message":"从缓存中获取值时Redis异常:An 写入时发生未知错误 消息","级别":"错误","ExceptionType":"StackExchange.Redis.RedisConnectionException" 完整的堆栈跟踪供您参考:

"StackTrace":" 在 StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](消息 消息、ResultProcessor1 处理器、ServerEndPoint 服务器)中 //src/StackExchange.Redis/ConnectionMultiplexer.cs:line 2800\r\n at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message,ResultProcessor1 处理器,ServerEndPoint 服务器)中 //src/StackExchange.Redis/RedisBase.cs:line 54\r\n at MyApplication.RedisCacheAdapter.c__DisplayClass21_1.b__0() 中 M:\work2\7ae5cc7915b5f803\MyApplication\RedisCacheAdapter.cs:line 199\r\n 在 Polly.Policy.c__DisplayClass144_0.b__0(上下文 ctx,CancellationToken ct)\r\n 在 Polly.RetrySyntax.c__DisplayClass5_1.b__1(Context ctx,CancellationToken ct)\r\n 在 Polly.Retry.RetryEngine.Implementation[TResult](Func3 action,Context 上下文,CancellationToken 取消令牌,IEnumerable1 shouldRetryExceptionPredicates,IEnumerable1 shouldRetryResultPredicates,Func1 policyStateFactory)\r\n 在 Polly.RetrySyntax.c__DisplayClass5_0.b__0(Action2 action,上下文上下文,CancellationToken 取消令牌)\r\n 在 Polly.Policy.ExecuteInternal(Action2 action,Context context,CancellationToken 取消令牌)\r\n 在 Polly.Policy.Execute(Action2 动作,上下文上下文, CancellationToken 取消令牌)\r\n 在 MyApplication.RedisCacheAdapter.Put(String key,Byte[] bytes,TimeSpan 到期时间)在 M:\work2\7ae5cc7915b5f803\MyApplication\RedisCacheAdapter.cs:line 196","Exception":"写入时发生未知错误 message","LoggerName":"MyApplication.RedisCacheAdapter","Message":"Redis 将值设置为缓存时出现异常:发生未知错误 写的时候 message","ExceptionType":"StackExchange.Redis.RedisConnectionException"`

这种错误的原因是什么以及如何解决这个“StackExchange.Redis.RedisConnectionException”? redis 连接字符串属性的任何更改或 redis 版本更新都会有用吗?

有时,在 3 节点集群上维持 50 个请求/秒时也会出现以下异常超时异常

"Message":"Redis 超时异常发生。

解决方法

缓存项的序列化和/或反序列化可能存在问题。

首先要做的是检查是否总是相同的缓存项目失败。如果是这样的话,这些物品有什么特别之处。

,

您可以像这样在 ConnectionString 中放置 'syncTimeout' 参数

"RedisConfiguration": {"ConnectionString": "mycache.redis.cache.windows.net:6380,password=$$$$$$$$$F543shkerXXXXXg=,ssl=True,abortConnect=False,**syncTimeout=150000** "," DatabaseNumber ": 1}.

此参数设置“允许同步操作的时间(毫秒)”,如 https://stackexchange.github.io/StackExchange.Redis/Configuration.html 所示。

当我存储处理时间超过 5 秒的项目时,我遇到了这个问题,因为这是默认值。您可以尝试使用插入连接字符串中的参数来增加此值。我希望我能帮到你,问候。

相关问答

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