慢AppFabric,高CPU和内存使用率

时间:2014-08-05 14:33:13

标签: asp.net caching appfabric

我将AppFabric 1.1实现到我的ASP.NET Web应用程序中。我正在使用Read Through方法,因为我只需要从SQL数据库中读取图像并将它们存储在缓存中。所以我将有机会尽快检索这些数据。

我正在检查shell,我可以看到我的应用程序正在从缓存中成功读取并在缓存为空时写入缓存。但是,AppFabric的速度并不像我预期的那么快。没有AppFabric的版本比使用AppFabric的版本更快。除此之外,当我使用Appfabric时,我可以看到CPU和内存使用率很高。

有什么潜在的原因?你有什么建议给我?

赞赏你的想法,

1 个答案:

答案 0 :(得分:0)

所以没有更多细节,很难说清楚,但我可以尝试从AppFabric的经验中获得帮助。我们是在讨论AppFabric服务器或客户端计算机上的高内存使用率(不确定您是使用Web应用程序还是其他内容)

  1. AppFabric将慢于进程内存,AF也不应与应用程序位于同一服务器上。
  2. 您是如何创建AppFabric DataCacheFactory的?您是否为每个请求创建?这很糟糕,因为它很昂贵,所以应该是静态/单身。我喜欢
  3.   

    public class AppFabricDistributedCacheManagerFactory {

    private static DataCacheFactory _dataCacheFactory;
        public void Initialize()
        {
            if (_dataCacheFactory == null)
            {
                _dataCacheFactory = new DataCacheFactory();
            }
        }
    ......
    
    1. 您是否在AppFabric中启用了本地缓存,以获取适合的图像。
    2. 确保您的提供商不会抛出异常,并且只在真正应用时调用Appfabric。把小提琴放在你开发盒上并观看请求。所以注意

      1. 首先打电话给AF,你在使用地区吗?让你创造它。
      2. 如果您要创建区域?你保存之前是否存在?以防万一你看这个代码..在此之前......我有一些问题

        public void SaveToProvider(string key,TimeSpan duration ,string regionName,object toSave)
        try
        {
            Cache.Put(key, toSave, duration , regionName);
        }
        catch (DataCacheException cacheError)
        {
            // Look at the ErrorCode property to see if the Region is missing
            if (cacheError.ErrorCode == DataCacheErrorCode.RegionDoesNotExist)
            {
                // Create the Region and retry the Put call
                Cache.CreateRegion(_regionName);
                Cache.Put(key, toSave, duration , regionName);
            }
        }
        
    3. 当您请求的项目不是缓存时,请观察请求..请参阅调用AF然后加载图像并再次呼叫AF进行保存。

    4. 当您知道已加载的项目时,请观察请求,如果您使用的是本地缓存,则应该看不到AF请求。如果您不是,请查看。