【发布时间】:2010-12-26 03:42:52
【问题描述】:
我有一个 ASP.NET 应用程序,它将在 Web 服务器 (Windows Server 2003) 中运行,为我的 Intranet 用户提供服务。现在我想监控应用程序的性能:如内存管理、未关闭的数据库连接等……最终目的是优化应用程序的工作。我应该为此做些什么?有没有可用的免费工具?
【问题讨论】:
标签: .net asp.net performance optimization
我有一个 ASP.NET 应用程序,它将在 Web 服务器 (Windows Server 2003) 中运行,为我的 Intranet 用户提供服务。现在我想监控应用程序的性能:如内存管理、未关闭的数据库连接等……最终目的是优化应用程序的工作。我应该为此做些什么?有没有可用的免费工具?
【问题讨论】:
标签: .net asp.net performance optimization
ASP.NET 包含可以使用 Windows Performance Monitor (Perfmon.exe) 跟踪的性能计数器。您可以从 Windows Server 2003 的管理工具中启动它。
您可能想查看这些文章,这些文章可以指导您选择最合适的性能计数器:
【讨论】:
使用 Windows 性能计数器可能很难确定您需要观察哪个计数器,然后在短期、中期或长期内对其进行分析。
我通常使用日志性能分析 (PAL) 工具(非常易于使用!)根据您需要监控的内容(IIS Web 应用程序、SharePoint、Exchange 等)收集特定和预定义的性能计数器,以及然后使用 PAL 向导构建漂亮的报告:
试一试,很高兴了解您网站的总体性能。
当然,如果您需要深入了解应用程序以查找内存泄漏或任何性能损失,您可以尝试使用 Redgate ANTS Performance Profiler:
【讨论】:
除了公认的答案之外,有时性能计数器和 IIS 日志不足以追踪大型复杂的单体应用程序。在这种情况下,堆栈信息可能会有所帮助。 Perfview 可以帮你解决这个问题,它是 open source。
例如,假设您想要跟踪 .NET 堆栈信息并在 Web 请求超过 3 秒时停止。然后,您将在提示符处运行以下命令
perfview collect -StopOnRequestOverMsec:3000 -ThreadTime -NoNGenRundown -Merge:false -Zip:false -LogFile:perfviewlog.log -CircularMB:512 -DataFile:LongRequest.etl
然后使用 perfview 分析 LongRequest.etl 文件并追踪有问题的 .NET 调用。在Microsoft's Channel9 上查看更多信息。
【讨论】:
我会运行像 jetBrains dotTrace 或 ANTS profiler 这样的分析器。
两者都可以分析 CPU 使用情况或内存使用情况。很容易找到 CPU 使用率高的方法或内存使用量大的对象。 不过不是免费的。
【讨论】: