65.9K
CodeProject 正在变化。 阅读更多。
Home

为什么您的 ASP.NET 应用程序运行缓慢?

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013年5月1日

CPOL

3分钟阅读

viewsIcon

38881

当试图加速运行缓慢的应用程序时,了解问题所在会有所帮助。 性能问题有很多原因,但最常见且难以诊断的问题之一是应用程序的数据访问。

如何理解数据访问

ANTS Performance Profiler 让您可以一站式查看应用程序数据访问的各个方面,并了解它与您的 .NET 代码的关系。

针对 SQL Server 或 Oracle 数据库运行的任何查询都会被记录,以及这些查询的运行次数和所花费的时间。 该信息会与您的 .NET 代码一起显示,因此您可以快速了解您编写的代码导致执行这些查询的原因。 如果您使用像 Entity Framework 这样的 ORM 来访问数据,这会特别强大。ORM 往往是一个无法穿透的黑盒子,性能问题可能会出现,但很难理解原因。

1. 数据库活动在应用程序的调用树中可见

ANTS 还允许您查看应用程序发出的任何 HTTP 请求,以便了解与 Web 服务器通信如何影响性能。 URL、动词和状态代码会被捕获,以及完整的请求和响应标头信息。

2. 有关 Web 请求的详细信息

与数据库性能分析一样,此信息也显示在应用程序的调用树中,因此您可以了解任何长时间运行、不必要的重复或失败请求的真正原因。

您还可以查看文件系统访问如何通过文件 I/O 性能分析影响性能。它向您显示应用程序进行的任何磁盘访问的完整列表,以及读取或写入的数据量以及 I/O 操作所花费的时间。

能够看到所有关于数据访问性能的信息,以及它与您的代码的关联,使您无需尝试手动将单独的日志与您的代码关联,并让您可以继续编写出色的软件。

异步代码实际上在做什么?

如果您最近尝试使用 C#5 的新 Async / Await 关键字编写异步代码(可能用于 MVC4 中的异步控制器),您可能仍然在为异步编程变得如此容易而微笑。 也许您还在等待陷阱?

当您想查看代码的性能时,那个时刻很可能会到来。 当您编译异步代码时,在幕后,.NET framework 会拆分异步方法,以便 Await 关键字之前的方法部分通常在与 Await 关键字之后的部分(延续)不同的线程上执行。 当您查看该代码的性能时,无法看到该方法的不同部分是如何相关的,这使得理解性能不佳的代码变得异常复杂。 您也无法看到异步完成工作所花费的时间与导致其运行的代码之间的关系,并且方法名称不再像您编写的那样,因为您暴露于异步状态机的内部重命名系统。

3. 异步性能在您编写的代码的上下文中显示

ANTS Performance Profiler 具有新的异步性能分析模式,可将您的方法重新连接起来,因此您可以将延续视为实际属于的方法的一部分。 ANTS 还可以向您展示在异步活动(例如发出数据访问请求)上花费的时间如何与导致该活动运行的方法相关联,并按照您编写的方式呈现方法名称。 现在您可以了解异步代码在您编写的上下文中的性能,并最终了解您需要修复什么才能使您的应用程序运行得更快。

接下来是什么?

了解更多关于ANTS Performance Profiler的信息,并在您自己的应用程序上试用,享受 14 天的免费试用期。

© . All rights reserved.