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);
}
}