What would make troubleshooting easier


So I have asked How do you Troubleshoot ASP.NET problems- so now I would like to know what would you like to see that would allow you to figure out issues faster?

I have a few ideas of my own, but I don’t want to sway anyone in one way or another.

  • Would you like to see changes in the product – ASP.NET or .NET itself?
  • Would you like to see some kind of tool?
  • Would you like to see additional perfmon counters?
  • Would you like to see additional documentation on the existing methods that can be used?

Let me know what you think.  Even if it is a dream type of idea.  I’ll either update this post or add a comment with a few thoughts I have had as well.

kick it on DotNetKicks.com

Comments (16)

  1. padam says:

    if it is related to database, then data field must be proper while working in asp.net.

    Business logics should be managed and planned.

    Validation is must.

    try catch block is essential.

  2. AdamC says:

    It is crucial that whatever is done, it must be usable in shared hosting scenarios where we (or our customers) do not have full control over servers, etc.

  3. Francois Ward says:

    A) Full Visual Studio integration of tools such as SOS (read: a pretty GUI). I realise the reason it is not there is most likely because you guys try to integrate the most commonly used features in the IDE, and because of time constraints, other stuff stays command line (same deal with all of the Team Foundation Server configuration tools), but you did say dreams were allowed 🙂

    B) Mini-dump style feature for .NET. I want to be able to take a dump on the fly on a production server, bring it in Visual Studio, load up the symbols, and be able to trace it like C++ programmers can. We can sortoff simulate this with SOS and whatsnot, but it is nowhere as good.

    C) Something you have already, but make sure you don’t stop: All these blog posts by you and other MS employees about how you guys troubleshot ASP.NET, the tools available, etc.  I had never heard of SOS until it was shown in these blog posts. Which brings me to an interesting point: why the hell isn’t advanced troubleshotting part of the MCPD certifications? Then at least I would have been made aware of it when I studied for mine 🙂

    All this has one goal: bring advanced troubleshotting to the mass. When something goes to hell on a production server, in all of the companies I worked for since .NET 1.0 went RTM, I’ve been the only person in my teams that was able to waggle through the tools and features available to figure out what was wrong, and troubleshotting isn’t my forte to begin with. That means that the barrier for entry is a bit too high. The VS debugger is awesome, but as soon as you go out of its boundaries, the next step is really steep.

  4. tomchris says:

    Adam,

    You want the data that is analyzed to be shared in a hosting scenario?  Or what do you mean, can you explain it more?

  5. tomchris says:

    Francois,

    Thanks for the comments.  I appreciate them.  There is actually some really exciting news about certifications about this.  We have a beta of a new exam that isn’t exactly related to .NET, but still is all about the internals of Windows and making sure you have a solid foundation, take a look at:

    http://blogs.msdn.com/ntdebugging/archive/2008/07/10/windows-internals-beta-exam-70-600.aspx

  6. Francois Ward says:

    Wow, pretty darn cool, and right on the dot. Honestly, considering the reality of the business world, someone with that certification (and who passed it fair and square, hehe) is probably of greater asset to most team than someone with an MCPD Enterprise, so thats great news.

    Still think no one should be able to pass any of the MCPDs without knowing about some of the troubleshotting stuff though (like SOS), but unfortunately, I did 🙂

    I’m going to make up for it by getting -that- certification once its final! Thanks! That made my day.

  7. JB King says:

    An ASP.Net-focused health monitor, similar to the System Information pop-up that one can get from the Process Explorer, would be what I’d like to see.  Something that tracks the number of threads, # of requests coming in, how fast requests are handled, memory used, etc. in one application that has an option to either see all the metrics on one graph or split the graph into a few tabs for each general area of threads, requests, memory, etc. to help measure how much of the capacity of the server is being used.  Note that the idea here isn’t to cover all the metrics but just a few.

    An IIS tuning application at some point would also be nice.  This would be something that notes all the registry settings in IIS that can be changed to improve performance and possibly with a few clicks make a recommended setting and help make the server better without doing a lot of digging into log files.

    If either of these exist, please tell me where I can find them.  Also, could there be a new tool that one could distribute to multiple machines and run from a server to test load?  Something so that I could put the client on 4 machines that from a server I ask for x threads to make y requests for z seconds and look at how well my code handles the load.

    Lastly, are there plans to make ASP.Net parallel processing development easier?  I realize this may be a big problem, but I think it would be nice if there was a way to write parts of an application that use a multiple number of cores more efficiently than doing something sequentially, e.g. like sorting a large data set on a quad-core server that could split it up amongst all the cores.

    JB

  8. JB King says:

    Just to add one other thought:

    Is it possible to integrate IIS more into Visual Studio?  For example, if I’m developing using Visual Studio 2008 on Windows XP Professional, is there a way to make the built-in web server run like IIS 7.0 or 6.0 instead of the 5.1 that is part of this version of XP?  Or would there have to be some new version of Windows for server developers that runs some server versions but can still be a developer’s workstation when needed, e.g. running Outlook or web browsers.

  9. Francois Ward says:

    @JB: It isn’t RTM yet, but have you heard of the parallel extensions for .NET?

    Among other things, it is introducing the almost-too-good-to-be-true PLINQ…

    so let say you have (silly example, but whatever):

    var foo = someCollection.Select(someString.Trim());

    You can simply do:

    var foo = someCollection.AsParallel().Select(someString.Trim()); and it will use all available cores to do the Select operation in parallel. It is really, really sweet. (Obviously you have to be careful for side effects, but it is a start).

    The extensions have a lot of other stuff for more complex scenarios too… It is still a CTP, but its moving along to be something quite amazing.

  10. Ben says:

    I would like to see some additions to application tracing capabilities.  For starters, the ability to filter requests to certian resources would be great.  For example, I would like to tell the tracing handler to ignore requests where File = “WebResource.axd”, or File = “ScriptResource.axd”, perhaps status = 200.  Maybe only show status = 200.

    Keeping tracing in mind, it’s a very helpful tool, allowing diagnostic information to be obtained in real time on a production site, but sometimes the value you want, a calculation, setting or some other nugget isn’t inside the traced information, so you aren’t able to resolve the issue without new trace statements etc.

    How cool would it be if you could replay a trace in a debugger?  Ok, maybe at this point it isn’t a trace and I see that we already have a minidump request above, but something like this would be nice to have.  Minidump when status = 5xx.

  11. PK says:

    1) SOS Intergration and GUI

    2) Blog posts, blog posts, blog posts. This and Tess’s blog are great … but for the average developer … we get lost at the SOS program requirement

    -me-

  12. tomchris says:

    PK,

    By get lost, do you mean it is too difficult to use SOS?  Hence the integration request.

  13. Hi,

    Half the battle is knowing what on earth the server is doing. SQL has SQL Trace, an IIS.Net version would be great.

    I’d also like to see a GUI snapshot (or in semi-real time like performance monitor, or SQL’s Activity monitor) showing pages executing and the methods they are currently running (ie a stack trace). That way 100% processor, long running pages, memory leaks even, would be very easy to spot and diagnose without resorting to SOS.

    It would be nice to link the web session with an application plugin as well so that I can tell that ‘John Smith is logged in [to our .Net web application] and he’s running a large report – that’s why the server is slow’ .

    A ‘GetApplicationSessionInfo’ method we can implement for you to call to capture meta data about a session from *our* perspective to add to your data to help with diagnosis.

    Best regards

    Steve

  14. tomchris says:

    Steve,

    One thing you may want to check out is the Managed Stack Explorer.  It can give you callstacks in real time.

    http://www.codeplex.com/MSE