我们的应用程序池每天都会循环使用几次。我很确定这是因为它达到了内存限制。我也很确定它不应该达到~3GB的内存限制。我尝试使用WinDbg来分析内存转储,但收效甚微。我可能稍后再试。但是,使用DebugDiag可以为我提供一些很好的数据可视化,并且已经导致一些改变,减少了它回收的次数。一个让我感到困惑和担心的报告是HttpContext报告。它显示了一些输出:
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
当然,报告中还有很多行。我真的有请求已经运行了995秒(约15分钟)但仍然没有完成?他们只是挂在那里吗?他们在等待其他事情完成吗?我不确定我是否能相信它,更不用说开始诊断了。其他人可以让我对如何解释这些数据有所了解吗?
答案 0 :(得分:3)
经过长时间的研究,我得到了解决方案,而不是确切的解决方案,但它可以提供帮助。
从列开始的长时间运行表示第一个请求开始的时间。 这并不意味着请求时间是为任何用户完成任何单个请求。 所以,这里没有什么可担心的。
编辑: 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
对于内存泄漏,我建议使用WinDbg。 WinDbg参考:
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