我有一个已经存在多年的 .NET Framework 4 ASP.NET 应用程序(WebForms 和 MVC 的组合)。在过去的几个月里,应用程序会突然停止响应,应用程序池将开始使用 99% 的 CPU 和 3gb(!)的 RAM。这种情况大约每 2 周发生一次,尽管今天发生了两次。
通常我们会终止进程并重新启动可以运行的应用程序池,但是我们现在已经使用 DebugDiag 进行了转储以尝试找出问题的根源。但是我无法找出问题所在 - 主要原因是垃圾收集器似乎正在运行或处于异常状态 - '!dumpheap'给了我以下信息
The garbage collector data structures are not in a valid state for traversal.
It is either in the "plan phase," where objects are being moved around,
or we are at the initialization or shutdown of the gc heap. Commands related
to displaying, finding or traversing objects as well as gc heap segments may
not work properly. !dumpheap and !verifyheap may incorrectly complain of
heap consistency errors.
Address MT Size Object <exec cmd="!ListNearObj /d
01ef1000">01ef1000</exec> has an invalid method table.
我已经运行了 ~*e !clrstack 并得到了很多输出,几乎每个线程都显示“System.Threading.Monitor.ReliableEnter”......这是正常的吗?
我只是想知道是否有人知道基于上述内容,或者有任何关于分析这个转储文件的提示?转储是一个完整的转储,所以它大约 3gb
我在下面粘贴了我的 clrstack 输出,以防万一有人看中!