2011-11-01 91 views
1

我正在为危机情况做一些规划(上次我们每天从4k个访问者到1.3M),并且我注意到Azure AppFabric缓存的较低端有一些相当低的同时连接限制估计同时Azure Appfabric缓存连接

128Mb & 256Mb高速缓存=例如10个并发连接。

我正在使用缓存作为webrole会话状态 - 但仅在非常有限的一些情况下才将其放入(现场网站上个月已达到最高0.03MB!)如何计算最大连接数 - 这是否等于我指向它的服务器数量? CPU的数量?

我还没有尝试过,但缩放缓存看起来可能是24小时操作???,因此对紧急需求的扩展响应不够。

只是在一些指导原则帮助我挑选和初始缓存大小并合理扩展之后。

回答

2

您拥有缓存的连接数基本上是您拥有的DataCacheFactory实例的数量。出于这个原因,尽可能少地使用这些实例是一种好习惯。您还需要确保,当初始化DataCacheFactory的任何Azure实例在该实例停止时应该处理该实例,这有助于清除它已向服务开放的连接。

但是您说您正在使用缓存作为会话提供程序。这为每个角色实例创建了自己的DataCacheFactory。所以基本上每个角色一个连接。话虽如此,会话提供者似乎对它没有使用的连接进行清理时有点松懈,所以最好过度配置连接数。

您需要注意的另一件事是缓存上的“事务每小时”限制。如果对页面的每个请求都需要访问会话信息,这就是您可以在一个小时内处理多少个页面请求。

调整缓存大小实际上非常快,通常只需要一分钟左右。但是每24小时只能更换一次。所以如果你增加了负载,你可以使缓存变大,但是如果负载对于增加的缓存来说太大了,那么你需要等待24小时才能再次改变它。所以你可能最好在第一次调整大小时将缓存大得多,并在第二天将其缩小。

编辑: 在缺省情况下,如果你不通过配置缓存开启尽管这些信息在,书写时是正确的,2011年十一月(1.6)更新到SDK推出了缓存的连接池码。这使得只有一个静态DataCacheFactory并不重要,这意味着如果要为会话和应用程序数据使用相同的连接信息,这可能都是一个连接。更多details can be found on MSDN

+0

使用会话提供程序是否意味着每个页面都依赖于缓存并导致缓存命中?如果不是,它只是一个页面的子集。任何想法幕后发生的事情?每小时的交易量是不是明显的计量? – Andiih

+0

基本上是的。除非你为这个调用禁用会话(这包括ajax调用,我认为即使是像css和图像这样的资源调用,但这是别人可以回答的另一个问题)。通常,交易在任何地方都不可见。显然,你可以将它们看作应用程序结构应用程序的一部分,但我没有亲自尝试过。 – knightpfhor

+0

“多数民众赞成在另一个问题”......是现在:-) http:// stackoverflow。COM /问题/ 7977963 /时,使用-Azure的AppFabric的缓存作为一种会话状态提供商 - 什么 - 原因 - 一个反 – Andiih