加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在本地PC上,IIS和浏览器使用大结果集最大化CPU

发布时间:2020-12-16 03:59:37 所属栏目:asp.Net 来源:网络整理
导读:我刚刚升级到VS 2013并且还启动了一个新的MVC项目,在我本地PC上进行调试时,IIS面临着几分钟内99%的CPU使用率. (发布和调试模式都发生)我刚刚意识到问题与 Linq Query返回的行数成正比.如果我使用Take(1)或Take(10)就可以了.如果我使用Take(100),则会出现问
我刚刚升级到VS 2013并且还启动了一个新的MVC项目,在我本地PC上进行调试时,IIS面临着几分钟内99%的CPU使用率. (发布和调试模式都发生)我刚刚意识到问题与 Linq Query返回的行数成正比.如果我使用Take(1)或Take(10)就可以了.如果我使用Take(100),则会出现问题.

这是我的actionresult(私人信息已更改):

public ActionResult Summary(string daystoshow,DateTime? day = null)
    {
        int daysToShow = daystoshow.ToSafeInt();
        if (daysToShow < 1) daysToShow = 2;
        if (day == null) day = Convert.ToDateTime("4/14/2014");  
        SummaryViewModel m = new SummaryViewModel();
        string warnings = "";
        var ef1 = new carshowEntities();

        DateTime dayAtMidnight = Convert.ToDateTime(((DateTime)day).AddDays(daysToShow).ToShortDateString());

        var diplayItems = (from x in ef1.islands
                             join y in ef1.cars on x.serid equals y.serid where x.dt==12  
                             join z in ef1.ITEMS on y.serviceno equals z.ITEMNO
                             join x2 in ef1.islands on x.serid equals x2.serid where x2.dt==8 
                             join i in ef1.INVOICES on x.carStyle equals i.carStyle where i.STATUS==8
                             where x.LiscenceDate > day && x.LiscenceDate < dayAtMidnight
                             orderby x.LiscenceDate,y.serviceno,x.serid
                             select new ReturnedItem()
                             {
                                 CarOrderDate = (DateTime)x.LiscenceDate,serial = x.serid,ItemCode = y.serviceno,Description = z.Color,DateSold = (DateTime)x2.LiscenceDate,ID = i.IX_ID
                             }).Take(100).ToList();



        m.daystoshow = daysToShow;
        m.day = day;
        m.diplayItems = diplayItems;
        m.warnings = warnings;
        return View(m);
    }

我还没有找到任何描述这里确切情况的帖子.

1)当网站发布时,它可以很好地从服务器上运行.

2)在调试模式下运行MVC项目时CPU使用率高达99%.

3)如果我在本地发布,问题就不会发生.

4)在调试或发布模式下从VS运行时,IIS和IIS Express都会发生这种情况.

5)到目前为止,这个项目不会发生在其他网站上.

6)这是一个简单的项目,一个actionresult,一个页面有一个约200行的表,填充了Linq查询.

有没有办法让调试器至少告诉我它在做什么?

编辑:

经过进一步调查,我注意到如果我等待2分钟,CPU将从IIS返回,但那么Web浏览器(Firefox或Chrome)将占用99%的CPU再持续2分钟.

解决方法

我发现解决方案只是关闭“ Browser Link”,这是VS 2013中的一项新功能,经过大量的调试和搜索.

通过单击图标上看起来像刷新按钮的向下箭头,可以在工具栏中关闭浏览器链接.

浏览器链接是在浏览器本身中对页面进行更改的一种方式,这似乎是CPU密集型的,因此使用大量元素进行更改会导致CPU出现峰值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读