【问题标题】:What are the ways to find bottlenecks in a web application?有哪些方法可以找到 Web 应用程序中的瓶颈?
【发布时间】:2010-10-05 14:32:18
【问题描述】:

如何对我的 Web 应用程序的性能进行基准测试?

有没有办法找出 Web 应用程序中的瓶颈?

编辑:我不是在询问任何前端调整,如图像、css 等。我想知道的是如何分析应用程序的后端,以便我知道要修改哪些方法/查询以提高性能.

【问题讨论】:

    标签: php asp.net performance web-applications


    【解决方案1】:

    Tracing 是一个很好的开始

    【讨论】:

      【解决方案2】:

      您能否更具体地了解平台(XP、Vista、Server 2000、2003、2008)和运行应用程序的方法(IIS、Windows 服务)。如上所述,跟踪是一个好的开始,但根据配置 Web 应用程序的环境,还有其他工具。

      【讨论】:

        【解决方案3】:

        关于应用服务器的瓶颈,你可以使用profiling tool来查看你的代码的每一部分花费了多少时间,使用了多少内存等等。对于PHP,webgrind似乎是一个流行的,基于GUI的分析方式。像dotTrace 这样的东西会对 ASP.NET 应用程序做同样的事情。请注意,当涉及到数据库时,像这样的分析工具只会告诉您哪些数据库查询很慢——而不是为什么它们很慢。为此,您需要查看特定于数据库的分析...

        Web 应用程序瓶颈的另一个方面是浏览器实际下载所有内容(CSS 和 JavaScript 导入、图像等)并呈现页面需要多少时间。有几家公司,例如 Keynote,他们的机器人会从世界各地访问您的网站,分析性能,并为您提供有关可以进行更改的建议,以便将应用程序的输出 发送到浏览器并呈现尽快(例如,“使用 gzip 压缩并将 JavaScript 放在页面末尾而不是头部”等)。当然,您也可以在更小的范围内自己进行此操作。例如,像 JiffyYSlow 这样的 Firefox 插件就可以完成这项工作。

        【讨论】:

          【解决方案4】:

          对于任何网络应用,您都可以尝试使用 Firebug 扩展以及 Yahoo YSlow 扩展(针对 Firebug)。对页面性能非常有帮助。 http://developer.yahoo.com/yslow/

          【讨论】:

          • 虽然是客户端,但对解决上游问题没有帮助
          【解决方案5】:

          如果你使用 Perl,那么 Devel::NYTProf 就是 super amazing

          我在 OSCON 和 MySQL 会议上做过几次关于“Real World Web: Performance & Scalability”的教程(幻灯片可用in PDF),你可能会觉得它很有趣。

          【讨论】:

            【解决方案6】:
            【解决方案7】:

            Fiddler 是流量记录和监控的好工具。它适用于客户端,您可以查看客户端和 Web 服务器之间的请求和响应。您可以轻松分析慢页面并检测原因(对于许多请求、大页面...)

            专门针对 ASP.Net,有跟踪机制可以为 Web 应用程序创建详细的日志。日志显示时序信息,您可以找到长时间运行的函数。 (MSDN文章:ASP.NET Tracing Overview

            【讨论】:

              【解决方案8】:

              第一步是快速而肮脏的。在 iPhone、带 3G 连接的笔记本电脑、带卫星互联网连接的 pc 和 windows mobile PDA 上试用。如果这行得通,你就完成了。如果不是,请进行三角测量。

              【讨论】:

                【解决方案9】:

                打开跟踪功能,如果它是一个网络应用程序,则 trace=true 并在您触发的方法的开头和结尾放置跟踪语句。这将为您提供系统中刻度的非常详细的读数,以及每个部件运行所需的时间。

                如果您有一个正在调用的库,那么您也可以使用 httpcontext.Current.Trace.Write 在其中进行跟踪,以输出您需要查看的内容。或者,如果您的应用真的很挑剔,您可以编写自己的函数来将跟踪语句存储在共享变量中,并在脚本运行后将其写入数据库或其他机制。

                【讨论】:

                  【解决方案10】:

                  尝试使用一些测试引擎(例如 PHPUnit)来对您的应用程序施加压力,并使用您的 shell 查看哪些进程需要更长时间才能解决。

                  在 Unix/Linux 上,您可以使用 'top' 命令

                  在 Windows 上使用任务管理器(扩展)

                  【讨论】:

                    【解决方案11】:

                    如果您想要找到瓶颈的通用方法,请尝试使用 HTTP 监控工具。这使您可以查看哪些类型的请求需要更长时间,或者它们是否返回错误消息。然后,您可以使用特定于平台的分析工具根据来自该工具的数据对应用程序的特定区域进行归零。

                    我喜欢使用像 Charles 这样的 HTTP 代理工具来进行此类分析。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2013-06-18
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2011-04-02
                      • 1970-01-01
                      • 2019-12-06
                      相关资源
                      最近更新 更多