有哪些方法可以找到Web应用程序中的瓶颈?

时间:2009-02-05 05:06:49

标签: php asp.net performance web-applications

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

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

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

11 个答案:

答案 0 :(得分:26)

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

Web应用程序瓶颈的另一个方面是浏览器实际需要花费多少时间来处理所有内容(CSS和JavaScript导入,图像等)并呈现页面。有些公司(如Keynote)有机器人可以从世界各地访问您的网站,分析性能,并为您提供有关您可以将应用输出到浏览器所做的更改的建议并尽快呈现(例如,“使用gzip压缩并将JavaScript放在页面末尾而不是头部”等)。当然,你也可以在更小的规模上做到这一点。例如,JiffyYSlow之类的Firefox插件可以完成这项工作。

答案 1 :(得分:4)

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

答案 2 :(得分:3)

Tracing是一个很好的开始

答案 3 :(得分:2)

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

特别是对于ASP.Net,有一种跟踪机制,可以为Web应用程序创建详细的日志。日志显示计时信息,您可以找到长时间运行的功能。 (MSDN文章:ASP.NET Tracing Overview

答案 4 :(得分:1)

尝试使用一些测试引擎(如PHPUnit)来强调您的应用程序,并使用您的shell来查看需要更长时间才能解决的过程。

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

Windows上的

使用任务管理器(扩展)

答案 5 :(得分:0)

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

答案 6 :(得分:0)

如果您使用Perl,则Devel::NYTProfsuper amazing

我有一个教程,我已经在OSCON和MySQL会议上做了几次关于“Real World Web: Performance & Scalability”(可用幻灯片in PDF),你可能会发现它很有趣。

答案 7 :(得分:0)

答案 8 :(得分:0)

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

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

答案 9 :(得分:0)

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

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

答案 10 :(得分:-3)

第一步是快速而肮脏的。在iPhone,具有3G连接的笔记本电脑,带卫星互联网连接的电脑和Windows移动PDA上试用。如果可行,那就完成了。如果没有,则进行三角测量。