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

22

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

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

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

11个回答

26
关于应用服务器上的瓶颈问题,您可以使用性能分析工具查看代码中每个部分花费了多少时间,使用了多少内存等等。对于PHP来说,webgrind似乎是一种流行的基于GUI的分析方式。类似于dotTrace的工具也可以为ASP.NET应用程序执行相同的操作。请注意,当涉及到数据库时,这样的分析工具只会显示哪些数据库查询较慢 - 而不是为什么它们很慢。为此,您需要查看特定于数据库的分析...
另一个影响Web应用程序瓶颈的方面是浏览器实际下载所有内容(CSS和JavaScript导入,图像等)并呈现页面所需的时间。有几家公司,例如Keynote,他们拥有机器人可以从世界各地访问您的网站,分析性能,并向您提出建议,以便尽可能快地将您的应用程序输出到浏览器并呈现(例如,“使用gzip压缩并将JavaScript放在页面末尾而不是头部”等)。当然,您也可以自己在较小的范围内执行此操作。例如,Firefox插件JiffyYSlow可以完成此工作。

3

追踪是一个很好的开始。


3
任何网络应用都可以尝试使用Firebug扩展程序,加上Yahoo YSlow扩展程序(针对Firebug)。这对网页性能优化非常有帮助。 http://developer.yahoo.com/yslow/

2
客户端虽然有用,但无法解决上游问题。 - annakata

2
"Fiddler"是一款用于流量记录和监控的好工具。它可以在客户端上运行,您可以看到客户端和Web服务器之间传递的请求和响应。您可以轻松分析缓慢的页面并检测原因(请求过多、页面过大等)。
特别针对ASP.Net,有一个跟踪机制可以为Web应用程序创建详细的日志。日志显示时序信息,您可以找到运行时间较长的函数。(MSDN文章:ASP.NET跟踪概述)

1

尝试使用一些测试引擎,如PHPUnit来压力测试您的应用程序,并使用您的Shell查看哪些进程需要更长时间来解决问题。

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

在Windows中,请使用任务管理器(扩展版)


0

您能更具体地说明平台(XP、Vista、Server 2000、2003、2008)和运行应用程序的方法(IIS、Windows Service)吗?如上所述,跟踪是一个很好的开始,但根据Web应用程序配置的环境,还有其他工具可供选择。


0


0

打开跟踪功能,如果是Web应用程序,则将trace=true设置为真,并在触发方法的开头和结尾放置跟踪语句。这将为您提供系统中的滴答声的非常详细的读数,因此可以知道每个部分运行所需的时间。

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


0
如果你想找到通用的瓶颈查找方法,可以尝试使用HTTP监控工具。这样可以让你看到哪些请求花费了更长时间,或者是否返回了错误信息。然后,你可以使用特定于平台的分析工具根据工具提供的数据来聚焦于应用程序的特定区域。
我喜欢使用像Charles这样的HTTP代理工具进行此类分析。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接