【问题标题】:Slow performance on asp.net website, where to start looking for the problem?asp.net 网站性能慢,从哪里开始寻找问题?
【发布时间】:2010-12-07 14:44:42
【问题描述】:

我使用 Asp.net C# 3.5 开发了一个站点,现在我觉得有些页面加载速度非常缓慢。我现在需要开始浏览该网站并尝试找出是什么让它变得如此缓慢。但我不知道从哪里开始,最有可能导致问题的原因是什么?当你试图找出问题所在时,你通常从哪里开始?

一个非常慢的页面使用以下内容:

  • Asp.net C# 3.5
  • AjaxControlToolkit (http://www.asp.net/ajax/AjaxControlToolkit/Samples/)
    • 圆角延长器
    • CollapsiblePanelExtender
  • 两个不同的更新面板
  • 与 MySql 数据库的 11 个连接(一个相当繁重,使用了一些联合和内部连接)
  • 与数据库的大多数连接都会导致填充 FormView 或 GridView,因此我总共在页面上有 2 个 formview 和 6 个 gridview(每个 gridview 最多显示 10 个项目)
  • CSS 文件会减慢网站速度吗?我使用的 CSS 文件大约 60kb。

使用 AjaxControlToolkit 会使网站变慢吗?有没有更好的方法在网站上使用 javascripts?

我知道您无法帮我找到加载缓慢的问题,但是您会从哪里开始寻找问题呢?数据控制器? AjaxControl 工具包? sql?找出mysql中的查询是否很慢的简单方法?什么是慢?大型查询会慢 0.3 秒吗?

如您所见,我有很多问题,也许您可​​以帮助我朝着正确的方向开始工作,非常感谢您的帮助!

【问题讨论】:

标签: asp.net javascript sql performance


【解决方案1】:

您可以开始将Trace="True" 添加到您的<%@ Page %> 指令中,然后查看您的页面花费最多的时间;还要检查您的 web.config 和配置 debug 是否已禁用。

您也可以使用Performance Monitor 来帮助您识别您的应用程序主要瓶颈

【讨论】:

  • 天哪,我不敢相信我忘记将调试设置为 false。感谢您的简单建议,我刚刚将网站的加载时间缩短了一半!也会调查追踪。
【解决方案2】:

别忘了

ASP.NET Tracing

这可能是开始诊断 ASP.NET 问题的第一件事,也是最简单的事情。

如果你想更深入一点,别忘了试试:

ASP.NET Health Monitoring

不过,根据您的说法,就我个人而言,我会考虑减少这些数据库连接的可能性。数据访问始终是(或可能是)主要瓶颈。 11 个连接对于单个页面来说是相当多的,尤其是如果其中一个或多个连接确实像您所说的那样“繁重”工作。页面可以分成两页或更多页吗?如果问题出在页面的渲染中,ASP.NET Tracing 的输出应该在这方面有所帮助。

CSS 文件虽然 60kb 相当大,但可能是最不可能的罪魁祸首,因为大多数浏览器会在第一次请求后缓存 CSS 文件。

【讨论】:

    【解决方案3】:

    我在处理此类事情时的一般方法总是相同的。我开始删除功能 - javascript/css/include 文件 - 直到页面变得更具响应性 - 通常我将页面恢复到最低复杂性并从这里构建。将它们一一添加,您应该能够确定瓶颈在哪里。您还可以使用(对于 MySQL)慢查询日志之类的工具来识别有问题的查询。如果是这种情况,将您的查询抽象出来并在 phpmyadmin(或类似的)中运行它们也可以帮助您识别哪些查询存在问题。

    我想您需要确定的第一件事是页面的“慢”到底是什么,是渲染时间吗?加载时间?确定这一点应该会给你一个很好的起点。

    【讨论】:

      【解决方案4】:

      首先,您需要进行一些分析/测量以找出应用程序的哪个部分运行缓慢,例如:

      • 长时间运行的数据库查询
      • web/db 服务器上的 CPU/内存使用率
      • Web 服务器和客户端(浏览器)之间传输的数据量
      • 在浏览器中呈现页面所需的时间 (javascript)

      【讨论】:

      • 谢谢!我在一个共享主机上,所以我看不到长时间运行的 dbs 或 cpu/memory。但我会开始一一测试我的查询,然后我可以像 Yuriy 提到的那样尝试使用 firebug。
      【解决方案5】:

      我会先检查执行这些 SQL 查询需要多长时间。不确定 MySql 的 SQL Profiler 类型工具会被称为什么。如果这不是罪魁祸首,您可以创建一个 TraceAttribute,如 here 所示,以查看每个方法执行所需的时间。如果这不是罪魁祸首,您可以继续使用 FireBug 或 Fiddler 之类的工具来查看站点的每个部分需要多长时间才能加载以及每个请求需要多长时间。你也可以使用 Tracing 而不是 Post Sharp,但是当你有一把锤子时,每个问题看起来都像钉子。

      【讨论】:

        猜你喜欢
        • 2011-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-08
        • 1970-01-01
        • 1970-01-01
        • 2011-02-23
        • 1970-01-01
        相关资源
        最近更新 更多