我正在使用SS4.5.2将我的ServiceStack API从Linux/Mono (在我自己的硬件上)转移到Azure。我的Redis缓存是3.2,运行在Linux上。我是,而不是使用Azure服务的。
我看到这个异常似乎是随机抛出的:
RedisException -超逾00:00:03
由于每个堆栈跟踪都包含"ServiceStack.ServiceExtensions.GetSession“和"ServiceStack.AuthenticateAttribute.Execute”,所以异常似乎是使用身份验证属性从服务抛出的。我目前只使用Redis作为会话存储,所以这一点并不奇怪。
我按照下面的方式注册了我的ICacheClient,它已经在生产中使用我以前的Linux/Mono设置已经有一段时间了:
container.Register<IRedisClientsManager>(c =>
new RedisManagerPool("SomeRedisMachine:6379"));
container.Register(c => c.Resolve<IRedisClientsManager>().GetCacheClient());我确实看到了SS表单上的帖子:https://forums.servicestack.net/t/redis-exception-exceeded-timeout-of-00-00-03/2301 -然而,这似乎只适用于使用Azure服务,而我不是。
鉴于这些信息,有几个问题我必须找到答案:
提前感谢您的洞察力!
更新
根据神话的建议,我确实更新了SSV4.5.4。异常仍然会被抛出,但是与上述更新的超时一致的消息(超过了00:00:10的超时)将被抛出。
我决定针对Azure Redis服务(而不是Linux )。到目前为止,我在ServiceStack 4.5.2或4.5.4中都没有看到与Redis相关的错误。也许,无论微软在自己的Redis服务中使用什么,都有更好的网络连接和/或更接近集群处理应用程序服务。
发布于 2016-12-08 18:35:25
Redis TimeoutException是一个不健康环境的症状,该环境正在阻止Redis客户端建立一个TCP连接。这可能是由于您的redis服务器实例或网络超载或不可靠造成的。
您可以增加超时时间,以便给Redis客户端更多的时间来进行连接:
RedisConfig.DefaultRetryTimeout = 10 * 1000;这也是ServiceStack.Redis v4.5.4+的新的默认超时。
https://stackoverflow.com/questions/41045007
复制相似问题