Profilers and ASP.NET
There are a lot of different ways to troubleshoot ASP.NET issues. I have gone over most of the things you can do with a dump that has been captured from the process. But there is another way to get useful information out of a process and that is by using a profiler.
Traditional Performance and/or Memory Profilers
- AutomatedQA AQTime: http://www.automatedqa.com/products/aqtime/index.asp (evaluation version available)
- Borland Optimizeit: http://www.borland.com/opt_profiler/ (evaluation version available)
- Compuware DevPartner: http://www.compuware.com/products/devpartner/default.htm (evaluation version available)
- Intel VTune: http://www.intel.com/software/products/vtune/index.htm (evaluation version available)
- Rational PurifyPlus: http://www-306.ibm.com/software/awdtools/purifyplus/win/ (evaluation version available)
- Red Gate ANTS Profiler: http://www.red-gate.com/code_profiling.htm (evaluation version available)
- SciTech .NET Memory Profiler: http://memprofiler.com/ (evaluation version available)
- GlowCode http://www.glowcode.com/summary.htm (evaluation version available)
- NProf: http://code.google.com/p/nprof/
- JetBrains .NET Profiler: http://confluence.jetbrains.net/display/NetProf/EAP
- CLR Profiler: http://www.microsoft.com/downloads/details.aspx?FamilyId=86CE6052-D7F4-4AEB-9B7A-94635BEEBDDA&displaylang=en
Enterprise Health Monitors
- AVICode Intercept Studio: http://www.avicode.com/content/products/InterceptStudio.asp
- Identify AppSight: http://www.identify.com/solutions/solutions.html
- Mercury (Various Products): http://www.mercury.com/us/solutions/net/
- Tonic WebLens: http://www.tonic.com/products/weblens.php
- CA Wily Introscope: http://www.ca.com/us/application-management.aspx
The drawback with any of these profilers is that it has to be enabled prior to the process starting up. So it is very difficult to use these to analyze a web server.
Note: SciTech has the following on their website (but I haven’t actually tested it out) - A wizard is also provided for connecting the profiler to already running processes, or to import memory dump files. This is especially useful when profiling problems in a production application.
With .NET 4.0, this will change as profilers are allowed to attach to a running process. This will make profiling much better when dealing with ASP.NET. Check out David’s blog for more info on that.
I have used some of these and have had my own experiences with them but I really want to hear what you guys think.
Some questions I have for you guys in regards to profilers:
- Do you use a profiler against your code?
- Which profiler(s) have you used?
- How much success do you have with it?
- Are you thinking of using a profiler to help track down any issues?
- What features do you think would be really useful for a profiler to have?
- What drawbacks keeps you from using a profiler?
- Would you consider running a type of profiler against your application in development if it helped you to get a better idea of performance or potential issues with your code?