代码之家  ›  专栏  ›  技术社区  ›  Matt Briggs

ASP.NET WebForms是CPU密集型平台吗?

  •  4
  • Matt Briggs  · 技术社区  · 15 年前

    我在一家ASP.NET商店工作,今天我听说我们服务器上的瓶颈是CPU。我一直认为webapps倾向于在CPU之前进行I/O和网络绑定。这是ASP.NET/IIS吗?这是我们的代码吗?还是我完全错了?

    此外,我们使用webforms做面向公众的社会/商业网站。不是CPU负载有问题,或者其他什么问题,我们的服务器目前可以处理负载。我刚刚发现它令人吃惊,因为从我对Web应用程序的理解来看,CPU在扩展方面并不是问题,尤其是在运行速度很快的编译语言(如.NET)上。

    7 回复  |  直到 15 年前
        1
  •  6
  •   Nick Berardi    15 年前

    这是你的密码。 ASP.NET本身不存在CPU密集型的问题,我实际上会打电话来质疑那些认为CPU是瓶颈的研究,因为除非您计算出Web应用程序上的第十亿个小数点的π,否则我看不出什么原因会占用所有的CPU时间。

        2
  •  3
  •   womp    15 年前

    很可能是您的代码。你不能在这里对ASP.NET进行分类描述,它就像其他计算机程序一样,完全取决于你的应用程序实际在做什么。

    为网页提供服务并没有本质上的CPU密集型。我见过一台运行IIS的笔记本电脑提供1200页的请求 每秒 . 尽管ASP.NET的配置更适合“易用性”而非最佳性能,但调整它以获得最佳性能并不难。

    您可以使用分析器,例如 Dottrace RedGate Ants 看看你的代码在哪里减慢了一切。

        3
  •  1
  •   kemiller2002    15 年前

    我将查看代码以查看是否存在性能问题。这个网站每天提供近100万页的服务,似乎做得很好。ASP.NET在编写时针对可伸缩性进行了相当优化。

        4
  •  1
  •   Bob Kaufman    15 年前

    虽然乍一看,我会说“I/O密集型,当然”,但事实是,这取决于您的应用程序所提供的服务。

    在一个极端,多媒体服务器当然是I/O绑定的。

    另一方面,一个只提供纯文本HTML页面的计算密集型站点将受到CPU的限制。

    根据我的经验,我发现大多数站点都是I/O绑定的。也就是说,当购买额外的服务器时,它将增加I/O而不是CPU吞吐量。我要说的是,即使是我工作过的最精细的站点,大约有30台服务器,也会有一台处理器提供很好的服务。正是网络带宽引导了我们的购买。

        5
  •  0
  •   mcjabberz    15 年前

    如果你的硬件很慢,是的。对大多数现代服务器来说,不是。在大多数情况下,数据库会对您的CPU造成更大的负担。

        6
  •  0
  •   Akash Kava    15 年前

    如果您谈论的是CPU密集型,那么它的相对术语.NET不是,但ASP.NET非常重要。在每个请求上执行数千次回发和重新创建/销毁控件的Web应用程序都非常昂贵。

    这样想,在纯ASP.NET(非Ajax的,旧的)中计算可见性/颜色。HTML页面中每个元素的所有属性仅用于服务器上1000个用户,并将其分发给客户机。不仅如此,写得不好的ASP.NET服务器控件会因为计算太多而占用更多的CPU。

    为了提高ASP.NET的性能,应该使用更多的Ajax,或者像RIA这样的flex/silverlight将大大减少CPU开销,因为您可以使用客户端的CPU来实现数据可视化。

    RIA客户端(flex/silverlight)+asp.net Web服务是未来的发展方向,我没有详细的统计数据可供分享,但我们几乎一年前就离开了ASP.NET,我们的CPU使用率从基于RIA的网站之前的99%降至平均18%。

        7
  •  0
  •   gjutras    15 年前

    运行一个分析器来查看应用程序中是否有一些区域使用了太多的CPU,或者内存量太多。在服务器上使用任务管理器,查看是否正在运行的是IIS(inetinfo和w3wp),而不是其他进程。如果是,请检查是否是您的应用程序池正在流失。使用iisap命令查找分配给哪个工作进程的应用程序池。