【问题标题】:finding performance bottlenecks in ASP.NET发现 ASP.NET 中的性能瓶颈
【发布时间】:2010-11-22 08:44:37
【问题描述】:

我们有 MSSQL、一些 C# Web 服务、一些 ASP.NET 和一些 AJAX。我们的加载时间很糟糕,刷新页面通常需要 2-3 秒,有时甚至更长。我不知道从哪里开始。

有哪些分析工具可以跨整个端到端来确定最大的瓶颈在哪里?

【问题讨论】:

    标签: asp.net sql-server performance optimization


    【解决方案1】:

    您最好的选择...正如我之前说过一百万次...是Red Gate 工具集。

    ANTS Performance Profiler 是适合您的工具。

    对于 SQL Profiling,您始终可以使用 SQL Server 附带的内置 Profiler。

    【讨论】:

    • 当然,使用它并能够在代码中找到我从未怀疑过的瓶颈。比如强类型数据集。
    • 无耻插件:去年我写了一篇博文讨论我的 ASP.Net 优化工具箱。我还推荐了 Ants 作为分析器,从那时起他们对它进行了显着改进。 Dottrace 也很棒。这是帖子:phpvs.net/2008/08/11/…
    • @Tomas 分析生产没有什么不同,但由于分析自然会引入一些开销,这可能是你最后的手段,当然要尽快完成。其他注意事项包括如果您需要原始端口,可能需要重新启动服务器,但如果应用程序是 .NET4,您可以尝试采样。就像我说的,“最后的手段”——开发/测试/登台环境更可取。
    • 顺便说一句,由于回答了这个问题,ANTS Performance Profiler 现在还可以分析您的 SQL(MS / Oracle)调用:goo.gl/rGI21
    • 更正:“如果应用程序是.NET4,你可以尝试采样”,应该是“尝试附加到进程”:)
    【解决方案2】:

    如果您只需要这样做一次,或者您没有足够的钱购买您可能找到的任何分析器,您总是可以求助于跟踪。

    在从 Web 服务或数据库调用中提取结果的 C# 代码中,使用代码包装调用以检测调用所需的时间。将其写入某个日志文件、调试输出或直接写入结果页面。对其他看起来可疑的情况执行类似的操作。

    【讨论】:

      【解决方案3】:

      系统是否仅在一种环境中表现不佳,即数据集比您开发的数据集更大?在过去,这对我们来说一直是个问题,b/c 人们会针对少量数据编写错误的查询,但在我们投入生产之前永远不会注意到。

      如果没有,那么我相信人们会推荐很多好的工具,例如 SQL Profiler、Visual Studio 的 Profiler,或者只是在您的 ASP .Net 页面上使用 Trace=true。对于 AJAX,我发现像 Firebug 这样的 JavaScript 调试器对于查看幕后发生的事情很有用。

      【讨论】:

      • +1 用于 ASP.NET 跟踪。如果您有一些围绕数据绑定项的日志记录或跟踪语句,那可能会有所帮助。有一次我发现数据检索不是瓶颈,而是它将 5000 条记录绑定到一个下拉列表。因此对数据库查询进行了优化,以减少绑定的项目数。
      【解决方案4】:

      Jetbrains 有一个名为 dotTrace 的产品,它可以监控性能和内存。

      【讨论】:

        【解决方案5】:

        可能最好的第一步是确定是数据库花费时间还是前端。

        Red Gate 工具也很有用,但如果您不确定他们要修复什么,您可能希望从更基本的级别开始。如果是数据库,那么 SQL Server profiler 就是你的朋友。那里有一些基本的痕迹,特别注意持续时间和读数,将为您指明正确的方向,或者至少可以帮助您识别问题区域。

        在 Web 端,跟踪标志可能特别有用。

        祝你好运! 丹

        【讨论】:

          【解决方案6】:

          Google Page Speed - 一个Firebug 插件 - 也可以作为跟踪加载 ASPX 页面时消耗您的时间的选项。

          顺便说一句,通常巨大的 ViewState 也可能是 Aspx 页面上的一个问题。

          【讨论】:

            【解决方案7】:

            更多关于 @Juri 所说的内容,还可以获取 Firebug 的 YSlow 插件。

            我首先要做的几件事来提高速度:

            1. 将所有 CSS 文件合并为一个(并缩小)
            2. 将所有 Javascript 文件合并为一个(并缩小)
            3. 页面上有多少张图片?考虑使用 Sprite。
            4. 页面上有任何 404 吗?

            另外,您是否尝试过仅使用 Trace="true"。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2015-07-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-06-12
              • 2018-07-20
              • 1970-01-01
              相关资源
              最近更新 更多