0

我们在生产中有一个 asp.net 应用程序,其中 w3wp.exe 占用 100% CPU(4 核 - 4 个线程,占 25%)并且 cpu 负载在我们回收应用程序池之前永远不会下降(应用程序在应用程序池中是单独的) . 我们的错误日志没有任何内容,没有发出异常(或者至少我们没有捕获它们)所以我们怀疑这是代码问题(无限循环/死锁)。只有在高负载(数千名用户)运行几个小时后才会出现问题。

有什么方法可以分析导致 CPU 负载的现有线程之一?在查看了 JetBrains 的 DotTrace Profiler 之后,似乎不可能因为 Profiling API 和 man 的限制,我们还没有在我们的测试环境中重现这个问题。该应用程序使用 SQL Server 2005、LINQ2SQL 和 System.Transactions API。

有什么建议可以找到问题吗?

4

1 回答 1

2

创建当前正在运行的应用程序的内存转储,然后下载WinDbg 和 SoS(罢工之子)查看正在运行的应用程序的内存配置文件,以了解消耗最多内存的内容,以及性能问题所在。如果您有一个 .NET 4 应用程序,您可以在 Visual Studio 2010 中加载内存转储,并更直观地了解消耗内存的内容。您将能够查看当前正在运行的进程,并能够根据 CPU 使用情况来衡量这些进程。

dnr tv 剧集 - Tess Ferrandez 在 .NET 中调试是关于如何使用 WinDbg 调试 ASP.NET 应用程序的一个很好的介绍。

于 2010-05-31T11:18:03.937 回答