相关疑难解决方法(0)

AppFabric缓存 - 正确使用DataCacheFactory和DataCache

我正在寻找最安全的方式来安排appFabric缓存调用的datacache和datacache工厂的使用,每页加载400到700个缓存(几乎没有任何放置).似乎使用单个静态DataCacheFactory(或者可能是循环设置中的一对)是要走的路.

我是否为每个DataCache对象请求调用GetCache("cacheName"),还是在初始化DataCache工厂时将其设置为静态并将其用于所有调用?

我是否必须处理异常,检查失败代码并尝试重试?

当多个线程尝试使用缓存存储并且想要相同的项目(按键)时,是否必须考虑争用?

是否有某种文档正确地探讨了它的设计和用法?


我到目前为止从论坛收集的一些信息:

http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/98d4f00d-3a1b-4d7c-88ba-384d3d5da915

"创建工厂涉及到连接到集群并且可能需要一些时间.但是一旦你拥有了工厂对象和你想要使用的缓存,你可以简单地重用这些对象来执行put并进入缓存,你应该看到更快的表现."

http://social.msdn.microsoft.com/Forums/en-US/velocity/thread/0c1d7ce2-4c1b-4c63-b525-5d8f98bb8a49

"创建单个DataCacheFactory(singleton)比创建多个DataCacheFactory更有效.你不应该为每个调用创建DataCacheFactory,它会有性能损失."

"请尝试在您的单例中封装循环算法(具有3/4/5工厂实例)并比较负载测试结果."

http://blogs.msdn.com/b/velocity/archive/2009/04/15/pushing-client-performance.aspx

"您可以增加客户端数量以增加缓存吞吐量.但有时如果您希望拥有较小的客户端集并增加吞吐量,则需要使用多个DataCacheFactory实例.DataCacheFactory实例创建与服务器的连接(例如, .g如果有3个服务器,它将创建3个连接)并将来自数据缓存的所有请求多路复用到这些连接上.因此,如果put/get卷非常高,这些TCP连接可能会出现瓶颈.所以一种方法是创建多个DataCacheFactory实例,然后对它们使用操作."


这里到目前为止使用了什么...调用属性,如果返回值不为null,则执行操作.

private static DataCache Cache
{
    get
    {
        if (_cacheFactory == null)
        {
            lock (Sync)
            {
                if (_cacheFactory == null)
                {
                    try
                    {
                        _cacheFactory = new DataCacheFactory();
                    }
                    catch (DataCacheException ex)
                    {
                        if (_logger != null)
                        {
                            _logger.LogError(ex.Message, ex);
                        }
                    }
                }
            }
        }

        DataCache cache = null;

        if (_cacheFactory != null)
        {
            cache = _cacheFactory.GetCache(_cacheName);
        }

        return cache;
    }
}
Run Code Online (Sandbox Code Playgroud)

在Microsoft AppFabric论坛上查看此问题:http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614f

performance caching appfabric

33
推荐指数
1
解决办法
2万
查看次数

AppFabric扩展问题疑难解答(间歇性错误代码<ERRCA0017>:SubStatus <ES0006>错误)

我们已经为我们的Web应用程序实现了AppFabric Windows Server Cache.最初,我们能够毫无问题地使用缓存.然后我们将流量增加了大约100倍,并开始出现间歇性异常.例外情况大约每2天发生一次,大约每分钟发生一次.

我们的配置:

  • 9个Web服务器在缓存中插入/检索对象:
    • 主要是临时500字节操作类型对象
    • 使用1个命名区域
    • 存储有标签的对象
    • 已批量检索给定标签
  • 缓存集群:
    • 1个主机(主管)AppFabric 1.1(get-cachehost报告的版本为3)
    • SQL配置提供程序
    • 主机上有96GB的RAM,默认50%(48GB)分配给AppFabric
    • 缓存主机配置
    • 缓存客户端配置

错误按顺序发生(在1分钟内,九个Web服务器中的每一个都会发生异常):

  • System.Net.Sockets.SocketException:远程主机Microsoft.ApplicationServer.Caching.DataCacheException强制关闭现有连接: ErrorCode<ERRCA0016>:SubStatus<ES0001>:The connection was terminated, possibly due to server or network problems or serialized Object size is greater than MaxBufferSize on server. Result of the request is unknown. ---> System.ServiceModel.CommunicationException: The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or …

appfabric appfabric-cache

18
推荐指数
1
解决办法
1万
查看次数

标签 统计

appfabric ×2

appfabric-cache ×1

caching ×1

performance ×1