在生产环境中分析正在运行的 ASP.NET 应用程序

Posted

技术标签:

【中文标题】在生产环境中分析正在运行的 ASP.NET 应用程序【英文标题】:Profiling running ASP.NET application in production 【发布时间】:2015-07-13 14:16:20 【问题描述】:

我正在尝试在生产环境(.Net 框架 4.0、WebForms、SQLServer、Windows 2008 服务器)中分析在 IIS 上运行的 Web 应用程序。 有几个页面在生产中反复缓慢,但我们无法在开发中重现。 我们无法在生产环境中安装任何 IDE 或类似工具。 有谁知道我们可以轻松放入服务器的 DLL 或独立 exe,运行大约一个小时,然后快速轻松地删除?....我们正在寻找分析的一个重要方面: --> 每个 CSharp 方法运行所花费的时间是多少。

提前谢谢你。

【问题讨论】:

Stack Overflow 不做推荐,但有各种各样的工具。最著名的(在撰写本文时)可能是 Glimpse,但对于任何细节,您都需要在应用程序中添加信息收集。 另一个好的 .NET 分析器工具是 Jetbrains 的 dotTrace。它允许本地和远程分析。他们有 10 天的免费试用期:jetbrains.com/profiler 【参考方案1】:

试试这个https://github.com/jitbit/cpu-analyzer 命令行工具来分析生产中的 cpu 负载。

我们从最初的 Sam Saffron 的 cpu profiler 中派生出这个,现在有点放弃了。

免责声明:我是这个项目的维护者。

【讨论】:

【参考方案2】:

Perfview 是用于此目的的最佳工具之一,已用于查找大量生产问题。

您可以使用多种方法缩小问题范围,它可以从网络级别到 IIS 到 asp.net 到您的 C# 方法。它使用 IiS、Asp.net 和 CLR 发出的 ETW 事件来执行此操作。

https://channel9.msdn.com/Series/PerfView-Tutorial/PerfView-Tutorial-7-Using-the-Event-Viewer-in-ASPNET-Scenarios

https://channel9.msdn.com/Series/PerfView-Tutorial

使用ThreadTime 视图,您可以缩小到特定方法

Perfview 始终收集系统范围的数据,您也可以设置循环缓冲区。但是收集数据的最佳方法是在问题开始发生时,您转到有问题的服务器并启动 perfview 跟踪并重现问题。然后您可以稍后分析这些数据以找出性能瓶颈。

【讨论】:

以上是关于在生产环境中分析正在运行的 ASP.NET 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在生产环境中分析请求?

在虚拟机环境中分析 Java 应用程序(例如 vbox、vpc、vmware 等)

在命令行中分析正在运行的 Java 应用程序

在Firefox中分析Webworkers

在 PyCharm 中分析 python 时内存使用率非常高

想要在本地机器的 JBoss 服务器中分析 Web 应用程序