Note that there are some explanatory texts on larger screens.

plurals
  1. POWeb Based Stack Dump Tool for ASP.NET Using Mdbg?
    primarykey
    data
    text
    <p>There is a great <a href="http://www.infoq.com/presentations/MySpace-Dan-Farino" rel="noreferrer">presentation</a> by Dan Farino, Chief Systems Architect at <strong>MySpace.com</strong>, showcasing a web-based stack dump tool that catalogues all threads running in a given process (what they're doing, how long they've been executing, etc.) </p> <p>Their techniques are also summarized on <a href="http://highscalability.com/myspace-architecture" rel="noreferrer">highscalability.com</a>:</p> <ul> <li><strong>PerfCollector</strong>.<br/> Centralized collection of performance data via UDP. More reliable than Windows and allows any client to connect and see stats.</li> <li><strong>Web Based Stack Dump Tool.</strong><br/> Can right-click on a problem server and get stack dump of the .Net managed threads. Used to have to RDC into system and attach a debugger and 1/2 later get an answer. Slow, nonscalable, and tedious. Not just a stack dump, gives a lot of context about what the thread is doing. Troubleshooting is easier because you can see 90 threads are blocked on a database so the database may be down. </li> <li><strong>Web Base Heap Dump Tool.</strong><br/> Dumps all memory allocations. Very useful for developers. Save hours of doing it by hand. • Profiler. Traces a request from start to finish and produces a report. See URL, methods, status, everything that will help you identify a slow request. Looks at lock contentions, are a lot of exceptions being thrown, anything that might be interesting. Very light weight. It's running on one box in every VIP (group of 100 servers) in production. Samples 1 thread every 10 seconds. Always tracing in background.</li> </ul> <p><strong>The question is: what tools are required to build a web-based stack dump tool for ASP.NET?</strong> For convenience, let's assume that an *.aspx hosted in the target AppDomain, able to output all managed call stacks in that process, is sufficient.</p> <p>There are a few posts that cover the use of <strong>Mdbg</strong> (debugger for managed code written entirely in C#/IL that started shipping with CLR 2 SDK) and the <strong>mdbgcore</strong> assembly typically found in C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin:</p> <ul> <li><a href="http://dotnetdebug.net/2005/11/09/exceptiondbg-v01-debug-your-exceptions/" rel="noreferrer">http://dotnetdebug.net/2005/11/09/exceptiondbg-v01-debug-your-exceptions/</a></li> <li><a href="http://blogs.msdn.com/jmstall/archive/tags/MDbg/default.aspx" rel="noreferrer">http://blogs.msdn.com/jmstall/archive/tags/MDbg/default.aspx</a></li> <li><a href="http://blogs.msdn.com/vijaysk/archive/2009/11/04/asp-net-debugger-extension-for-iis-7.aspx" rel="noreferrer">http://blogs.msdn.com/vijaysk/archive/2009/11/04/asp-net-debugger-extension-for-iis-7.aspx</a></li> </ul> <p>Would a solution simply reference this assembly to produce the desired output? What impact would a "list all managed call-stacks" operation have on the running process that's servicing production traffic?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload