【问题标题】:Intermittent Azure cache error: “Cache referred to does not exist. Contact administrator or use the Cache administration tool to create a Cache.”间歇性 Azure 缓存错误:“引用的缓存不存在。联系管理员或使用缓存管理工具创建缓存。”
【发布时间】:2014-01-07 19:43:12
【问题描述】:

我们有一个部署使用缓存角色一段时间(没有实际问题),并且我们最近在一个实例上添加了一个共置缓存。

自从我们添加了这个同位缓存后,我们开始偶尔会看到这个错误:

ErrorCode<ERRCA0009>:SubStatus<ES0001>:Cache referred to does not exist. Contact administrator or use the Cache administration tool to create a Cache.

当我们在缓存角色中访问缓存时,但这似乎几乎立即消失了,一段时间内一切正常,直到此问题再次出现。

缓存似乎不太可能不存在,因为它一直在工作,然后很快又开始工作,那么问题可能是什么?

编辑以添加更多细节。

我们有 2 个缓存。 1 是一个专用的缓存角色,它保存一些响应数据,在 web 和工作角色之间共享,有几个实例使用缓存(可能大约 10 个)。 1 是 1 个 Web 角色(2 个实例)上的同位缓存,其中包含一些仅此角色需要的小 id。

我们认为该问题可能与两个缓存都配置为使用 Microsoft.WindowsAzure.Plugins.Caching.ConfigStoreConnectionString 值中的相同存储帐户这一事实有关,并且它们似乎会覆盖彼此的更改。

这是使用两个缓存的角色的配置:

<dataCacheClients>
<dataCacheClient name="binaryConfig">
  <autoDiscover isEnabled="true" identifier="CacheRole" />
</dataCacheClient>
<dataCacheClient name="request-ids">
  <autoDiscover isEnabled="true" identifier="Api" />
  <localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />      
</dataCacheClient>

我们只是通过这样做来创建一个缓存客户端

new DataCache(cacheName, clientConfigurationName)

然后调用GetPut

【问题讨论】:

  • Sam - 你能补充一点细节吗?这是使用托管缓存的 Web 角色部署吗?有多少实例正在使用缓存?实例和缓存大小?
  • 您能否发布您的 web.config 文件的 部分以及用于访问 cacheClient 的 .Net 代码
  • 好的,更新了问题以包含您想要的数据。

标签: azure azure-caching


【解决方案1】:

所以我认为这是 1.7 SDK 中的一个错误,如果将 2 个缓存配置为使用相同的存储帐户来存储它们的配置,那么每个实例似乎都会覆盖其他实例的配置,所以你会得到最后一个的配置跑步。如果我们重新启动一个角色,则配置包含该角色配置,如果我们然后重新启动另一个角色,那么我们将获得该角色配置。更改每个缓存以使用单独的存储帐户似乎可以解决此问题。

【讨论】:

    【解决方案2】:

    在我的情况下,这似乎是因为我在一个具有不同命名缓存的天蓝色项目中有 2 个角色(一个角色 4 个命名缓存,另一个角色只有 1 个命名缓存)。碰巧我的 cacheclusterconfigs blob(与同位缓存关联的存储帐户)中的 cacheConfig.xml 被覆盖了 - 似乎对于一个部署,只允许所有角色的一个命名缓存配置。

    所以我猜你的情况也发生了同样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-08
      • 2016-11-23
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多