首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure上的ServiceStack.Redis超时

Azure上的ServiceStack.Redis超时
EN

Stack Overflow用户
提问于 2016-12-08 17:07:47
回答 1查看 719关注 0票数 3

我正在使用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设置已经有一段时间了:

代码语言:javascript
复制
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服务,而我不是。

鉴于这些信息,有几个问题我必须找到答案:

  • 将Redis移到更高的层对此有什么积极的影响吗?目前,VM是最小的可用版本之一。我今天要试试这个。更新:增加VM大小似乎不能解决这个问题。
  • Redis和之间的延迟是否太大?我无法想象这是一个问题,因为这些数据中心都在同一个数据中心内。
  • Linux/Mono和Azure difference (据推测是由某种修改的IIS支持的Windows)之间是否存在一些细微的差异,我需要加以考虑?

提前感谢您的洞察力!

更新

根据神话的建议,我确实更新了SSV4.5.4。异常仍然会被抛出,但是与上述更新的超时一致的消息(超过了00:00:10的超时)将被抛出。

我决定针对Azure Redis服务(而不是Linux )。到目前为止,我在ServiceStack 4.5.2或4.5.4中都没有看到与Redis相关的错误。也许,无论微软在自己的Redis服务中使用什么,都有更好的网络连接和/或更接近集群处理应用程序服务。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-08 18:35:25

Redis TimeoutException是一个不健康环境的症状,该环境正在阻止Redis客户端建立一个TCP连接。这可能是由于您的redis服务器实例或网络超载或不可靠造成的。

您可以增加超时时间,以便给Redis客户端更多的时间来进行连接:

代码语言:javascript
复制
RedisConfig.DefaultRetryTimeout = 10 * 1000;

这也是ServiceStack.Redis v4.5.4+的新的默认超时。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41045007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档