Всем привет! Есть новостной сайт
3 тыс уников, не так уж и много, на что только можно навешан кеш - [OutputCache(Duration = 180)]
такой - [OutputCache(Duration = 180, Location = System.Web.UI.OutputCacheLocation.ServerAndClient)] - не получается, пишет на дочерние элемент нельзя.
Потребление памяти уже перевалило за 1 Гб. CPU 50% На днях начала БД виснуть.
Разобрался что БД висла при получении записи при попытке увеличить просмотр ( recordDB.Views = Views + tmp;
db.SaveChanges();)
//УВЕЛИЧИМ ПРОСМОТР ЕСЛИ ИСТИНА
if (db == null) { db = new Times_DLL.Model.TimesDBEntities(); }
if (ViewPlus == true)
{
Random rand = new Random();
var recordDB = (from o in db.Records where o.id == id_record select o).FirstOrDefault();
int? Views = recordDB.Views ?? 0;
int tmp = rand.Next(2, 4);
recordDB.Views = Views + tmp;
db.SaveChanges();
ViewPlus = false;
var recordDB2 = (from o in db.Records where o.id == id_record select o).FirstOrDefault();
int? ff = recordDB2.Views ?? 0;
}
//возвращаем 1 дб объект
var record = (from rec in db.Records
join usr in db.UserProfiles on rec.User_id equals usr.id
join typ in db.TypesRecord on rec.Type equals typ.id
join cat in db.CategoriesRecord on rec.Category equals cat.id
join seo_source in db.SEOs on rec.id equals seo_source.id_record
into t1
from seo in t1.DefaultIfEmpty()
where rec.id == id_record && rec.Deleted == false
select new { record = rec, user = usr, TypeName = typ, PathImgCategory = cat, seo = seo }).AsEnumerable();
return record.Select(o => MapToRecordsBLLseo(o.record, o.user, o.TypeName, o.PathImgCategory, o.seo)).SingleOrDefault();
}
закомментировал полностью увеличение просмотра - работает и шустро. Как вариант можно хранимой процедурой увеличивать просмотр.
Хотелось бы советов от спецов и узнать как узнать что в проекте забирает am и cpu