English 中文(简体)
w3wp.exe in ASP.NET production app is using 100% CPU. How to find the problem?
原标题:

we have an asp.net app in production where w3wp.exe is taking 100% CPU ( 4 cores - 4 threads at 25% ) and cpu load never goes down until we recycle the application pool ( the app is alone in the application pool ). Our error log has nothing, there is no exceptions being emitted ( or at least we don t catch them ) so we suspect it s code problem ( infinite loop / deadlock ). The problem only arises after some hours running with high load ( several thousand users ).

There is any way to profile one of the EXISTING threads that is causing cpu load ? After taking a look to JetBrains s DotTrace Profiler seems like it s not possible for limitations of Profiling API and man, we haven t get to reproduce the problem in our testing environment. The app uses SQL Server 2005, LINQ2SQL and System.Transactions API.

Any suggestion to find the problem ?

问题回答

Create a memory dump of the currently running application and then download WinDbg and SoS (Son of Strike) take a look at the memory profile of the running application to see what is consuming the most memory, where the performance issues are. If you have a .NET 4 application, you can load the memory dump in Visual Studio 2010 and get more of a visual look at what is consuming memory. You ll be able to see wha processes are currently running an be able to gauge these against CPU usage.

The dnr tv episode - Tess Ferrandez on Debugging in .NET is a good introduction on how to use WinDbg for debugging an ASP.NET application.





相关问题
Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How do I compare two decimals to 10 decimal places?

I m using decimal type (.net), and I want to see if two numbers are equal. But I only want to be accurate to 10 decimal places. For example take these three numbers. I want them all to be equal. 0....

Exception practices when creating a SynchronizationContext?

I m creating an STA version of the SynchronizationContext for use in Windows Workflow 4.0. I m wondering what to do about exceptions when Post-ing callbacks. The SynchronizationContext can be used ...

Show running instance in single instance application

I am building an application with C#. I managed to turn this into a single instance application by checking if the same process is already running. Process[] pname = Process.GetProcessesByName("...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...

热门标签