For the next few weeks I’ll be participating in Microsoft’s Frontline program. It’s a great opportunity for me to get out and meet with customers using our products. This week I was down in Los Colinas TX at Microsoft Customer Support Services group. These guys are awesome. It’s unbelievable what their able to diagnose from the sketchy information they get. One of their engineers was explaining a customer who could only communicate a memory dump over the phone. Talk about tough…. I spent most of my time with the ASP.Net support team. These engineers are experts at diagnosing problems in deployed applications. They often don’t get the luxury having a repro in house that they can attach a debugger to and catch the failure. More often than not they collect dump files from the customer site and perform a post-mortem analysis. They’re like forensic CSI experts. They provide support 24x7. While I was there I saw everything from simple configuration issues to complex hangs or memory leaks in distributed systems.
There were some general issues I saw repeatedly. One of which was excessive memory consumption due to misuse of strings. There is a great article on MSDN covering performance http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt06.asp
Checkout the section on strings. In short don’t use concatenation += with Strings to build up a response page. Consider using Response.Write() directly or using StringBuilder to build up large strings. StringBuild is in the System.Text namespace. You’d be surprised how much of the overall memory consumption is in strings.
They’ve developed some awesome tools to help narrow down the problems customers face. More often than not it is a problem somewhere in the application or in a 3rd party component. And yes, occasionally in ASP.Net.
Many of the techniques they use are documented on MSDN. Check out this article: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/DBGch02.asp