LifeAct
@LifeAct
Создаем и раскручиваем, не ставим на конвейер

Как узнать что грузит ram и cpu на сайте asp mvc?

Всем привет! Есть новостной сайт
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
  • Вопрос задан
  • 241 просмотр
Пригласить эксперта
Ответы на вопрос 1
@andrey57r
Была такая же проблема и тоже на новостном сайте. Правда сайт на php. Решили переносом всех счетчиков в redis. По cron из redis периодически записываем просмотры в БД.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы