w3wp использует от 700 Мб до 1,2 Гб памяти без нагрузки

У меня есть приложение MVC3, использующее EF/Autofac и memcached (3 сервера переднего плана). При запуске приложения оно быстро подпрыгнет до 300 МБ с одним пользователем. На нашем производственном сайте (где трафик мал (< 10 пользователей одновременно)) он может легко занимать более 1,2 ГБ памяти. Это кажется мне очень большим числом.

Я пробовал Redgate Memory Profiler, но я просто не могу найти ничего необычного.

Единственное, о чем я могу подумать, - возможно, следующий код вызывает утечку памяти, что вы думаете?

private Dictionary<string, object> cacheDictionary = new Dictionary<string, object>();

    private IMemcachedClient _client;

    public MemcachedManager(IMemcachedClient client)
    {
        this._client = client;
    }

    #region ICacheManager Members

    public T Get<T>(string key)
    {
        object data;
        if (!cacheDictionary.TryGetValue(key, out data))
        {
            byte[] byteData = _client.Get<byte[]>(key);
            data = CommonHelper.Deserialize<T>(byteData);
            cacheDictionary.Add(key, data);
        }
        return (T)data;
    }

    public void Set(string key, object data, int cacheTime)
    {
        if (!cacheDictionary.ContainsKey(key)) //if memcache turned off this should still work
            cacheDictionary.Add(key, data);

        data = CommonHelper.Serialize(data);
        bool setCache = _client.Store(StoreMode.Set, key, data, DateTime.Now.AddMinutes(cacheTime));

        if (!setCache)
        {
            log.ErrorFormat("Failed to set the cache item, key {0}", key);
        }
    }

0 ответов

Другие вопросы по тегам