ASP.NET Tips: What to gather to troubleshoot - part 6 - Recycle due to memoryLimit
Here is another situation that you may come across and what to do in order to gather information about it.
The following steps will configure DebugDiag to automatically capture a memory dump of the ASPNET_WP.exe process recycling when it exceeds the memoryLimit. This only applies to the ASPNET_WP.exe process, so if using w3wp.exe, this doesn't apply. The following event is logged when this occurs:
aspnet_wp.exe xxx was recycled because memory
consumption exceeded 60% of available RAM
Before the issue occurs
A. Download DebugDiag:
====================
- Install the Debug Diagnostic tool
- The default installation location for the package is C:\Program Files\DebugDiag. It can be changed.
- Make sure any other monitoring and debugging tools are not running.
B. Create a Performance Monitor log:
====================================
Expand Performance Logs and Alerts
Right Click on Counter Logs
Choose New Log Settings...
Enter a descriptive name
Note the log file location for later (or go to the Log Files tab and change the location)
Click the Add button
Click the All Counters and All Instances radio buttons
Select the following from the Performance Object dropdown, being sure to Add each one as you select it:
- Process
- Thread
- Processor
- Memory
- .NET CLR Data
- .NET CLR Exceptions
- .NET CLR Interop
- .NET CLR Jit
- .NET CLR Loading
- .NET CLR LocksAndThreads
- .NET CLR Memory
- .NET CLR Networking
- .NET CLR Remoting
- .NET CLR Security
- ASP.NET
- ASP.NET Applications
Click Close
Click OK
For the ASP.NET counters, select the version that you are wanting to monitor. Ex. For 1.1 framework, select ASP.NET v1.1.4322 and ASP.NET Applications v1.1.4322.
Note: For more information on Performance monitor, see KB 248345
C. Configure server for the High Memory Event
==================================
Add the following registry keys. These were added to the .NET Framework so that a breakpoint exception will be thrown when the process recycles due to the above event.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET
DWord: DebugOnHighMem
Value: 1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET
DWord: UnderDebugger
Value: 0
C. Configure DebugDiag
===================
Configure DebugDiag to capture the memory dump when the BreakPoint Exception is thrown and when the process stops.
- Open DebugDiag
- On the Rules tab, click Add Rule
- Select Crash and click Next
- Select All IIS Processes and click Next
- Click Advanced Exception Configuration
- Click Add Exception
- Select Breakpoint Exception, change Action Type to Full UserDump
- Click OK
- Click Save and Close
- Click Advanced Breakpoint Configuration
- Click Add Breakpoint
- Type KERNEL32!ExitProcess and change Action Type to Full UserDump
- Click OK
- Click Save and Close
- Click Next through the rest of the wizard
Inject LeakTrack.dll to capture native leak information:
- Click the Processes tab
- Right-click the ASPNET_WP.exe process, select Monitor for leaks
After the issue occurs
The memory dump will automatically get captured.
A. Stop the Performance Monitor log
===================================
In Performance Monitor:
- Right click on your log that is now listed under Counter Logs
- Choose Stop Log
Comments
Anonymous
May 20, 2008
You've been kicked (a good thing) - Trackback from DotNetKicks.comAnonymous
May 21, 2008
So now that I am done with all the individual posts, I thought I would wrap them all together. Anonymous
May 24, 2008
Debug ASP.NET Tips: What to gather to troubleshoot - part 6 - Recycle due to memoryLimit DebugDiag 1Anonymous
May 24, 2008
DebugASP.NETTips:Whattogathertotroubleshoot-part6-RecycleduetomemoryLimitDebugDiag...