For troubleshooting issues such as high CPU usage or other performance problems, generating full memory dumps and debugging them with a tool such as Windbg help to pinpoint where in the call stack the problems are occurring.
Below are instructions on how to properly generate a full (not a mini) memory dump.
*Be sure that the dumps are Full memory dumps not mini dumps. (No dumps from task manager). (adplus –crash –pid or adplus –hang –pid)
There's basically two types of dumps, hang and crash. It would be best if you could take a couple of hang and carsh dumps during different intervals.
To get memory dumps you use ADPlus from Windows debugging toolkits that you can find on: http://www.microsoft.com/whdc/devtools/debugging/default.mspx
Dumps can be taken in two states, -hang and -crash. The difference is that hang can be run on the current state and crash dumps are created at a crash. If CPU/memory problems -hang is used. It's often good to take a few dump at different intervals so you can compare them.
You can either run against the process id on the application pool or against process name.
For process id:
cscript adplus.vbs -hang -p 5123
So if you want a crash dump just change to -crash cscript adplus.vbs -crash -p 5123 -o c:\dump
cscript adplus.vbs -crash -pn aspnet_wp.exe -o c:\dump
So -pn is process name and if you got more than one asp.net process you will have to run on process id to get the correct one. You can also run with the parameter -iis then it will create a dump for all processes.
To decrease the size of the dump you can zip it.
Copy mscordacwks.dll which you can find under C:\Windows\Microsoft.NET\FrameworkXXX\vXXX\. It depends on 64 bit or 32 bit and which version of the framework use the web application.
Note: clr.dll, sos.dll and and mscordacwks.dll can be found under C:\Windows\Microsoft.NET\Framework64\v4.0.30319