We are having severe performance issues (front and back end) running an Umbraco 7.2 installation as an Azure website. Microsoft suggests that it's because the site is generating thousands of exceptions (most of which are System.MissingMethodExceptions trying to access a missing member or method) and causing CPU time to max out trying to Garbage Collect all of them.
We are able to take crash dumps using Debug Diagnostics and see these exceptions in memory but they don't appear anywhere else.
Trace Log doesn't show them
umbracoLog table in the database doesn't have them
Debugging locally with visual studio set to stop when exceptions are thrown doesn't show them.
In fact everything seems great except for exceptions in memory dumps and the response times for website requests.
I've been using WinDBG to parse the stack trace from these dumps but it's slow and painful. It's revealed that the issues seem to be primarily caused by my navigation partial views (all razor) but I can't get a clear line number or error message using my current methods.
I'm have limited experience with .Net and debugging and I'm at a loss.
My questions for the community:
Is it possible to see catch these exceptions as they happen (so I can maybe get a line number and actual error)?
Do you have methods or recommendations for tracking errors with only a stack trace from a .dmp file (example below)
Do you have tips for running Umbraco on Azure websites?
Not sure... maybe it's a character number? Also, there is a setting in your umbracoSettings.config to have partials throw an error rather than silently swallowing exceptions (change it to "throw"):
That definitely isn't the line number (that particular script only has 146 lines) and setting the MacroErrors to "throw" instead of "inline" doesn't seem to make a difference. I'm still generating 10 or 15 crash dumps per page load.
However, if you would like line numbers, you can apparently get them by including the PDB (debug symbols) alongside the DLL's when you deploy your website, as the above link indicates.
Given your situation, however, I'd try a process of elimination. That is, delete all of the code in the partial, and see if the error stops happening. If so, restore half the code. Then delete or restore more code until you narrow down the problem code. A bit time consuming, but may help you solve the problem.
How to catch System.MissingMethodException errors
We are having severe performance issues (front and back end) running an Umbraco 7.2 installation as an Azure website. Microsoft suggests that it's because the site is generating thousands of exceptions (most of which are System.MissingMethodExceptions trying to access a missing member or method) and causing CPU time to max out trying to Garbage Collect all of them.
We are able to take crash dumps using Debug Diagnostics and see these exceptions in memory but they don't appear anywhere else.
In fact everything seems great except for exceptions in memory dumps and the response times for website requests.
I've been using WinDBG to parse the stack trace from these dumps but it's slow and painful. It's revealed that the issues seem to be primarily caused by my navigation partial views (all razor) but I can't get a clear line number or error message using my current methods.
I'm have limited experience with .Net and debugging and I'm at a loss.
My questions for the community:
Thanks!
Sample Call Stack
Isn't this the line number in your partial?:
Not sure... maybe it's a character number? Also, there is a setting in your umbracoSettings.config to have partials throw an error rather than silently swallowing exceptions (change it to "throw"):
Thank you Nicholas but no luck.
That definitely isn't the line number (that particular script only has 146 lines) and setting the MacroErrors to "throw" instead of "inline" doesn't seem to make a difference. I'm still generating 10 or 15 crash dumps per page load.
Reading this, it seems those numbers in your stack trace after the "+" signs are offsets into the compiled code (so, not too useful for your purposes): http://odetocode.com/blogs/scott/archive/2005/01/25/funny-numbers-in-my-stack-trace.aspx
However, if you would like line numbers, you can apparently get them by including the PDB (debug symbols) alongside the DLL's when you deploy your website, as the above link indicates.
Given your situation, however, I'd try a process of elimination. That is, delete all of the code in the partial, and see if the error stops happening. If so, restore half the code. Then delete or restore more code until you narrow down the problem code. A bit time consuming, but may help you solve the problem.
is working on a reply...