有很多工具可用来帮助您测试和监视 Web 应用程序的性能。Microsoft Visual Studio .NET 提供了 Application Center Test 1.0 (ACT),该程序通过打开与 Web 服务器的多个连接并迅速发送 HTTP 请求来模拟大批用户。ASP.NET 包括许多性能计数器,您可以使用这些性能计数器来跟踪应用程序的执行。您还可以使用内置的 ASP.NET 跟踪功能来跟踪页或应用程序的代码执行。
ACT 设计用于对 Web 服务器进行压力测试,并分析 Web 应用程序的性能和可伸缩性问题。有关 ACT 的更多信息,请安装 Visual Studio .NET 并打开 ACT 文档,或在位于 http://microsoft.com/china/msdn 的 MSDN 上执行搜索。
不同于为整个服务器计算机全局公开性能计数器的传统的 Active Server Page (ASP),大多数 ASP.NET 性能计数器是为单个应用程序公开的。在系统监视器工具 (PerfMon) 中,在 ASP.NET Applications 性能对象下有针对单个应用程序的计数器。如果服务器上有多个应用程序,当选择计数器进行监视时,您需要选择特定的应用程序实例。但是,PerfMon 中有一个特殊的 __Total__ 应用程序实例,它合计服务器上所有应用程序的计数器值。__Total__ 通常是计数器值的总和。
ASP.NET 还公开了仅限全局的计数器,这些计数器不限定于具体的应用程序实例。这些计数器位于 ASP.NET 性能对象之下。若要查看 Windows 2000 Server 计算机上所有可用的 ASP.NET 计数器,请使用下面的步骤。
查看 Windows 2000 Server 计算机上可用的 ASP.NET 计数器
- 从“开始”按钮指向“程序”,再指向“管理工具”,然后单击“性能”。
- 在 PerfMon 中单击“查看报表”。
- 单击“添加”。
- 选择“ASP.NET Applications”,选择“所有计数器”,然后单击“添加”。
- 选择“ASP.NET System”,选择“所有计数器”,然后单击“添加”。
查看安装了 IIS 的 Windows XP 计算机上可用的 ASP.NET 计数器
- 从“开始”按钮,单击“运行”。
- 在“打开”文本框中输入“perfmon”,单击“确定”。
- 在 PerfMon 中单击“查看报表”。
- 单击“添加”。
- 选择“ASP.NET Applications”,选择“所有计数器”,然后单击“添加”。
- 选择“ASP.NET System”,选择“所有计数器”,然后单击“添加”。
有关每个 ASP.NET 系统和 ASP.NET 应用程序性能计数器的信息,请参见 ASP.NET 的性能计数器。
ASP.NET 包含跟踪功能,该功能可以显示连续跟踪输出语句间的重要执行时间信息,以及有关服务器控件层次结构、使用的视图状态量和页上的控件呈现大小等信息。有关跟踪的更多信息,请参见 ASP.NET 跟踪。
由于 ASP.NET 运行于公共语言运行库之上,因此有可能完整地分析 Web 页,从入口点通过所有中间层对象到达结尾。这种分析在 ASP 中是不可能的,它为 ASP.NET 中的性能工作提供了上佳的工具。此外,公共语言运行库的所有分析器都能分析 ASP.NET 页。已知公共语言运行库的分析服务,则无需预先规范用户的代码;这将在运行时完成。有关分析器的更多信息,请参见调试和分析应用程序。
分析器有两个主要类型:调用属性化分析器和采样分析器。调用属性化分析器允许您查看页面或应用程序的所有方法调用,并且可以给出每个方法调用及其可能包含的子方法调用的具体执行时间。这种分析类型对于分析代码路径并尽量整理它们最有用。但是,如果执行通过任何尚未被规范的代码路径运行(例如,当从 ASP.NET 调用 COM 或本机方法时),分析器无法跟踪这些方法何时被调用。在这种情况下,分析器将它们归结为包含规范代码的最后一个方法。有关在代码中包含规范的更多信息,请参见调试和分析应用程序。
采样分析器的不同之处在于预先不需要进行规范。这种分析器实质上以指定的时间间隔或按 CPU 中断,对 CPU 进行取样并跟踪正在执行的代码内容。然后,它可以为用户提供在那段时间内什么样的代码最常被执行的视图。这种分析类型对代码中的故障诊断与排除、锁/资源争用以及性能瓶颈最有用。
当您要进行稳定状态运行分析时,最好忽略首次请求和对象一次性初始化的开销。例如,首次请求一个 ASP.NET 页时,总存在编译 Page 类实例的开销。一旦这已发生,后续请求的性能将提高。
有关 .NET Framework 中性能监视的更多信息,请参见监视性能阈值。