ASP.Net Worker Process Memory Profile Tools

2019-03-21 13:10发布

问题:

We have a fairly high volume ASP.Net site written in c# using MS commerce server, running in a 32-bit environment. I see the worker process up to 980 megabytes quite often. I would like to profile this process and determine where any gains could be made in code to reduce the memory foot print of this site. My question what tools have worked well for you doing this sort of thing on ASP.Net web applications?

I am looking for tools that will give me very specific feedback, that will really help to clearly see what needs to change in the code. It would be best if this tool could profile our production environment worker process for a more concrete set of data to compare.

[edit]

So far it seems the consensus is that it's a toss up between Ants and JetBrains. Has anyone used both? If so which one was superior, or what are the pros and cons of each?

回答1:

ANTS Profiler is very good at profiling ASP.NET applications.



回答2:

There's a free way.

  • launch the task manager
  • right-click the w3wp process
  • select "create dump" (I'm amazed how few people know about this feature)
  • copy the dump file to your local machine (so we don't bother the production server)
  • open the file in Visual Studio
  • enjoy
  • select "Debug Managed memory" for advanced view which class uses memory etc.

AFAIK, the above requires Visual Studio "Ultimate" edition (I guess its called "Enterprise" now?). If you don't have one, then follow these steps (very simple too)

  • launch WinDbg (free tool, part of Windows SDK, there are tons of answers here on StackOverflow on how to download WinDbg without all the SDK bloatware)
  • Press Ctrl + D and load the dump file into WinDbg
  • type .loadby sos clr (this will load SOS.dll that allows WinDbg to analyze .NET processes, SOS.dll is a part of NET Framework so you probably already have it)
  • type !dumpheap -stat (this will output the class names, sorted by memory usage, ascending order. Skip system.string and system.byte[] classes cause these are side-effects, not the cause...)


回答3:

http://www.jetbrains.com/profiler/



回答4:

Something like ANTS memory profiler might be useful to you.



回答5:

Also consider AQTime from Automated QA.



回答6:

dotTrace from JetBrains saved me several times. It is not free (trial is available), but it is really powerfull!



回答7:

We use AviCode, and it works pretty good for us.