【问题标题】:Connection to Redis cache fails after restart - Azure重新启动后连接到 Redis 缓存失败 - Azure
【发布时间】:2018-03-27 21:18:07
【问题描述】:

我们正在使用以下代码连接到我们的缓存(内存中和 Redis):

settings .WithSystemRuntimeCacheHandle() .WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime) .And .WithRedisConfiguration(CacheManagerRedisConfigurationKey, connectionString) .WithMaxRetries(3) .WithRetryTimeout(100) .WithJsonSerializer() .WithRedisBackplane(CacheManagerRedisConfigurationKey) .WithRedisCacheHandle(CacheManagerRedisConfigurationKey, true) .WithExpiration(CacheManager.Core.ExpirationMode.Absolute, defaultExpiryTime);

它工作正常,但有时机器会重新启动(由我们托管它的 Azure 自动重新启动)并且在重新启动后与 Redis 的连接失败并出现以下异常:

Connection to '{connection string}' failed. at CacheManager.Core.BaseCacheManager`1..ctor(String name, ICacheManagerConfiguration configuration) at CacheManager.Core.BaseCacheManager`1..ctor(ICacheManagerConfiguration configuration) at CacheManager.Core.CacheFactory.Build[TCacheValue](String cacheName, Action`1 settings) at CacheManager.Core.CacheFactory.Build(Action`1 settings)

根据 Redis FAQ (https://docs.microsoft.com/en-us/azure/redis-cache/cache-faq) 部分:“为什么我的客户端与缓存断开连接?”重新部署后可能会发生。

问题是

  • 是否有任何机制可以在重新部署后恢复连接
  • 我们初始化连接的方式有什么问题

我们确定连接字符串正常

【问题讨论】:

  • 在应用启动时,如果 Redis 不可用,CacheManager 将抛出该异常。不过,您可以增加 connectionTimeout 属性,也许这会有所帮助。您可以手动重试几次初始化...启动后,连接(如果建立一次)应该会在 Redis 服务器停机后自动恢复...

标签: azure redis azure-redis-cache redis-cache cachemanager


【解决方案1】:

大多数客户端(包括 StackExchange.Redis)通常会在连接中断后自动连接/重新连接。但是,您的连接超时设置需要足够大,才能成功进行重新连接。请记住,您只连接一次,因此可以给系统足够的时间重新连接。当您有突发的连接或重新连接导致 CPU 达到峰值并且某些连接可能无法及时发生时,较高的连接超时特别有用。

在这种情况下,我看到 RetryTimeout 为 100。如果这是连接超时,请检查它是否以毫秒为单位。 100 毫秒太低了。您可能想让它更像 10 秒(请记住,这是一次性的,所以您希望给它时间来连接)。

【讨论】:

  • 听起来是个好主意。但即使超时时间较短,连接也应在一段时间后恢复。但在我们的情况下,它永远不会恢复。你对此有什么解释吗?
  • 您在使用 SignalR 吗?如果没有,您使用的是什么技术? SignalR 在此处描述了一个已知问题:github.com/SignalR/SignalR/issues/4019。此外,请确保您没有使用 Redis 的 Basic SKU - 这是一个单一节点,如果操作系统得到修补,在修补完成之前将无法访问。
猜你喜欢
  • 2020-01-07
  • 2014-07-09
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多