Our app pool recycles several times a day. I'm pretty sure it's because it hits the memory limit. I'm also pretty sure that it should NOT hit the memory limit of ~3GB. I tried using WinDbg to analyze the memory dump, with little success. I might try again later. However using DebugDiag gives me some nice visualizations on the data and already lead to some changes that have reduced the number of times it recycles. One report that has me a bit confused and worried is the HttpContext Report. It shows some output like this :
HttpContext Timeout Completed RunningSince ThreadId ReturnCode Verb RequestPath+QueryString
0x02374c94 110 Sec No 995 Sec --- 302 GET /Loans/Details/529146/517006
0x02472a44 110 Sec No 993 Sec --- 200 GET /Login ReturnUrl=%2fLoans%2fDetails%2f529146%2f517006
0x024d2f94 110 Sec No 979 Sec --- 302 POST /Loans/UpdateDealer
0x025773c0 110 Sec No 951 Sec --- 302 GET /Applicants
0x025d6bb4 110 Sec No 951 Sec --- 200 GET /Login ReturnUrl=%2fApplicants
0x025f5adc 110 Sec No 935 Sec --- 302 GET /Applicants/Details/537358
0x02654708 110 Sec No 935 Sec --- 200 GET /Login ReturnUrl=%2fApplicants%2fDetails%2f537358
0x026b1bb4 110 Sec No 926 Sec --- 200 POST /Loan/InsertLoanChecklistItem
0x027710dc 110 Sec No 914 Sec --- 200 GET /Applicants
0x02779320 110 Sec No 915 Sec --- 302 POST /Login ReturnUrl=%2fApplicants
0x02797448 110 Sec No 914 Sec --- 200 GET /Loans/Details/523729/526198
0x02867070 110 Sec No 911 Sec --- 200 POST /Loans/UpdateAmount
There are, of course, many many more lines in the report. Do I really have requests that have been running for 995 seconds (~15 minutes) and are still not complete? Are they just hung there? are they waiting for something else to finish? I'm not sure I can even believe it, let alone start diagnosing it. Can someone else give me some insight into how to interpret this data?
After a long research I got the solution, not exact solution, but it can help.
The long running since column indicate the time from where its first request start. It does not mean the request time is to complete any single request for any user. So, here nothing to worry on this high number.
Edit: http://blogs.msdn.com/b/yunjin/archive/2005/08/25/456355.aspx
http://blogs.msdn.com/b/yunjin/archive/2005/08/29/457150.aspx
http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/17f783cd-d5af-4146-ab46-be80e62da750
And for memory leak I would recommend to use WinDbg. WinDbg ref:
http://blogs.msdn.com/b/alejacma/archive/2009/06/30/sos-cheat-sheet-net-2-0-3-0-3-5.aspx
http://geekswithblogs.net/.NETonMyMind/archive/2006/03/14/72262.aspx