在Azure中的VM使用Booksleeve Redis的客户端时,Redis的连接错误(Redis

2019-07-29 20:38发布

我最近开始举办的新Azure的虚拟机我的一个辅助项目。 该应用程序使用Redis的作为内存缓存。 一切都工作正常,在我的本地环境,但现在我已经搬到代码天青我看到一些奇怪的例外出来Booksleeve的。

当应用程序第一次激发了一切工作正常。 然而,约5-10分钟不活动后的应用程序的下一个请求都会经历网络异常(我的工作是正确的,现在不要对我确切的错误信息,所以我会张贴当我回家,如果人们认为他们是密切相关的讨论),这将导致内部的MessageQueue关闭,这将导致每个后续排队()抛出异常(“队列为关闭”)。

因此,一些谷歌搜索后,我发现这个职位的SO: 维护使用BookSleeve一个开放的Redis连接关于DIY连接管理器。 我当然可以实现类似的东西,如果这是最好的行动过程。

所以,问题:

  1. 这是正常的RedisConnection到一定量的时间后定期关闭?
  2. 我见过的conn.SetKeepAlive()方法,但我已经尝试过许多不同的价值观和没有似乎有所作为。 是否有更多的这还是我找错了树?
  3. 为处理这种情况的最好办法支柱上方的连接管理器的想法?
  4. 任何人都可以阐明为什么在新Azure的VM主机我Redis的情况下会导致此问题的任何额外的光? 我也可以肯定,如果我跑我对Azure的Redis的VM本地environement我遇到此问题。

就像我说的,如果它是不寻常的Redis的连接不活动后死去,我将张贴堆栈跟踪和异常从我的日志,当我回家。

谢谢!

UPDATE迪迪埃在评论中指出,该Azure的使用这可能与负载balanacer: http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/12/windows-azure-load-balancer-超时details.aspx

假如是这样的话,这将是实现一个连接管理器,可以解释为这个愚蠢的问题的最好办法。 我想我不应该创建每个工作权单位有关联吗?

Answer 1:

从其他的答案/评论,这听起来像这是蔚蓝的基础设施关闭插座看起来闲置造成的。 你可以简单地有一个计时器的地方,定期执行某种操作,但要注意,这是已经建成Booksleeve:当它连接,它会检查Redis的连接超时是什么,并配置一个心跳,以防止redis的从关闭套接字。 您也许能够背驮式是为了防止蔚蓝关闭套接字太多。 例如,在一个Redis的-CLI会话:

config set timeout 30

应配置的Redis(飞,而不必重新启动),以具有30秒的连接超时。 然后Booksleeve应自动采取措施,确保有一个心跳很快前30秒。 需要注意的是,如果这是成功的,你也应该让此设置在下次重新启动后也适用编辑配置文件。



Answer 2:

Windows Azure中的负载平衡器将关闭后量X连接的时间取决于负载平衡器总连接负载因为它你会在你的连接得到一个随机超时。

因为我不熟知的Redis连接我无法建议正确但如何实现它一般建议的解决办法是有一个心跳脉搏,让您的会议活着。 有你有机会寻找在博客建议的解决办法,并尝试在Redis的实现,如果你的作品吗?



文章来源: Redis connection errors when using Booksleeve Redis client in Azure VM