コード例 #1
0
 private static PageCachePreloadConfiguration ProcessPreloadConfiguration(XmlElement preloadPages)
 {
     var enabled = IsEnabled(preloadPages);
     var preloadConfiguration = new PageCachePreloadConfiguration {Enabled = enabled};
     decimal defaultRatio;
     preloadConfiguration.DefaultCacheRatio = Decimal.TryParse(preloadPages.GetAttribute("defaultCacheRatio"),
                                                               out defaultRatio)
                                                  ? defaultRatio
                                                  : 1.0m;
     preloadConfiguration.StorePreloadConfigurations = new Dictionary<string, StorePreloadConfiguration>();
     foreach (var storeConfiguration in preloadPages.GetElementsByTagName("store").OfType<XmlElement>())
     {
         var storeName = storeConfiguration.GetAttribute("name");
         decimal cacheRatio;
         if (!String.IsNullOrEmpty(storeName) &&
             Decimal.TryParse(storeConfiguration.GetAttribute("cacheRatio"), out cacheRatio))
         {
             preloadConfiguration.StorePreloadConfigurations[storeName] = new StorePreloadConfiguration
                 {
                     CacheRatio = cacheRatio
                 };
         }
     }
     return preloadConfiguration;
 }
        private static PageCachePreloadConfiguration ProcessPreloadConfiguration(XmlElement preloadPages)
        {
            var enabled = IsEnabled(preloadPages);
            var preloadConfiguration = new PageCachePreloadConfiguration {
                Enabled = enabled
            };
            decimal defaultRatio;

            preloadConfiguration.DefaultCacheRatio = Decimal.TryParse(preloadPages.GetAttribute("defaultCacheRatio"),
                                                                      out defaultRatio)
                                                         ? defaultRatio
                                                         : 1.0m;
            preloadConfiguration.StorePreloadConfigurations = new Dictionary <string, StorePreloadConfiguration>();
            foreach (var storeConfiguration in preloadPages.GetElementsByTagName("store").OfType <XmlElement>())
            {
                var     storeName = storeConfiguration.GetAttribute("name");
                decimal cacheRatio;
                if (!String.IsNullOrEmpty(storeName) &&
                    Decimal.TryParse(storeConfiguration.GetAttribute("cacheRatio"), out cacheRatio))
                {
                    preloadConfiguration.StorePreloadConfigurations[storeName] = new StorePreloadConfiguration
                    {
                        CacheRatio = cacheRatio
                    };
                }
            }
            return(preloadConfiguration);
        }
コード例 #3
0
        public ConfigurationProvider()
        {
            // Transaction Flushing
            TransactionFlushTripleCount = DefaultTransactionFlushTripleCount;

            // ResourceCacheLimit
            ResourceCacheLimit = DefaultResourceCacheLimit;

            // Connection String
            ConnectionString = null;

            // Query Caching
            QueryCache = GetQueryCache(true, DefaultQueryCacheMemory);

            // Persistence Type
            PersistenceType = DefaultPersistenceType;

            // Page Cache Size
            PageCacheSize = DefaultPageCacheSize;

            // StatsUpdate properties
            StatsUpdateTransactionCount = DefaultStatsUpdateTransactionCount;
            StatsUpdateTimespan = DefaultStatsUpdateTimespan;

            // Cache Preload Configuration
            var preloadConfig = new PageCachePreloadConfiguration
            {
                DefaultCacheRatio = DefaultPreloadCacheRatio,
                Enabled = DefaultPreloadCacheEnabled
            };
            EmbeddedServiceConfiguration = new EmbeddedServiceConfiguration(preloadConfig, false);

        }
コード例 #4
0
 public ConfigurationProvider()
 {
     PageCacheSize = DefaultPageCacheSize;
     ResourceCacheLimit = DefaultResourceCacheLimit;
     PersistenceType = PersistenceType.AppendOnly;
     QueryCache = new NullCache();
     StatsUpdateTimespan = 0;
     StatsUpdateTransactionCount = 0;
     TransactionFlushTripleCount = 1000;
     PreloadConfiguration = new PageCachePreloadConfiguration {Enabled = false};
 }
コード例 #5
0
 public static ServerCore GetServerCore(string baseLocation, PageCachePreloadConfiguration preloadConfiguration)
 {
     lock (UpdateLock)
     {
         if (!ServerCores.ContainsKey(baseLocation))
         {
             var serverCore = new ServerCore(baseLocation, QueryCache, PersistenceType);
             if (preloadConfiguration != null)
             {
                 serverCore.Warmup(preloadConfiguration);
             }
             ServerCores.Add(baseLocation, serverCore);
         }
         return ServerCores[baseLocation];
     }
 }
コード例 #6
0
        public ConfigurationProvider()
        {
            var appSettings = ConfigurationManager.AppSettings;

            // Connection String
            ConnectionString = appSettings.Get(ConnectionStringPropertyName);

            // Page Cache Size
            PageCacheSize = GetApplicationSetting(PageCacheSizePropertyName, DefaultPageCacheSize);

            // ResourceCacheLimit
            ResourceCacheLimit = GetApplicationSetting(ResourceCacheLimitName, DefaultResourceCacheLimit);

            // Persistence Type
            var persistenceTypeSetting = appSettings.Get(PersistenceTypeName);
            if (!String.IsNullOrEmpty(persistenceTypeSetting))
            {
                switch (persistenceTypeSetting.ToLowerInvariant())
                {
                    case PersistenceTypeAppendOnly:
                        PersistenceType = PersistenceType.AppendOnly;
                        break;
                    case PersistenceTypeRewrite:
                        PersistenceType = PersistenceType.Rewrite;
                        break;
                    default:
                        PersistenceType = DefaultPersistenceType;
                        break;
                }
            }
            else
            {
                PersistenceType = DefaultPersistenceType;
            }

            // Query Caching
            var enableQueryCacheString = appSettings.Get(EnableQueryCacheName);
            var enableQueryCache = true;
            if (!string.IsNullOrEmpty(enableQueryCacheString))
            {
                enableQueryCache = bool.Parse(enableQueryCacheString);
            }
            var queryCacheMemory = GetApplicationSetting(QueryCacheMemoryName, DefaultQueryCacheMemory);
            QueryCache = GetQueryCache(enableQueryCache, queryCacheMemory);

            // StatsUpdate properties
            StatsUpdateTransactionCount = GetApplicationSetting(StatsUpdateTransactionCountName, 0);
            StatsUpdateTimespan = GetApplicationSetting(StatsUpdateTimeSpanName, 0);

            // Transaction Flushing
            TransactionFlushTripleCount = GetApplicationSetting(TxnFlushTriggerPropertyName, DefaultTransactionFlushTripleCount);

            // Cache Preload Configuration
            PreloadConfiguration = new PageCachePreloadConfiguration
            {
                DefaultCacheRatio = GetApplicationSetting(CachePreloadRatioName, 0.5m),
                Enabled = GetApplicationSetting(CachePreloadEnabledName, false)
            };

        }
コード例 #7
0
 private List<WarmupInfo> GetStoreWarmupInfo(PageCachePreloadConfiguration preloadConfiguration)
 {
     var warmupInfos = new List<WarmupInfo>();
     foreach (var storeName in ListStores())
     {
         StorePreloadConfiguration storeConfiguration;
         string storeLocation = Path.Combine(_baseLocation, storeName);
         if (preloadConfiguration.StorePreloadConfigurations != null &&
             preloadConfiguration.StorePreloadConfigurations.TryGetValue(storeName, out storeConfiguration))
         {
             if (storeConfiguration.CacheRatio > 0)
             {
                 warmupInfos.Add(new WarmupInfo(storeName, storeConfiguration.CacheRatio,
                                                GetStoreDataSize(storeLocation)));
             }
             else if (preloadConfiguration.DefaultCacheRatio > 0)
             {
                 warmupInfos.Add(new WarmupInfo(storeName, preloadConfiguration.DefaultCacheRatio,
                                                GetStoreDataSize(storeLocation)));
             }
         }
         else if (preloadConfiguration.DefaultCacheRatio > 0)
         {
             warmupInfos.Add(new WarmupInfo(storeName, preloadConfiguration.DefaultCacheRatio,
                                            GetStoreDataSize(storeLocation)));
         }
     }
     return warmupInfos;
 }
コード例 #8
0
 public void Warmup(PageCachePreloadConfiguration preloadConfiguration)
 {
     if (preloadConfiguration != null && preloadConfiguration.Enabled)
     {
         ThreadPool.QueueUserWorkItem(RunServerCoreWarmup, preloadConfiguration);
     }
 }