gpt4 book ai didi

asp.net - 调试 ASP.Net 共享池技术

转载 作者:行者123 更新时间:2023-12-02 11:08:12 26 4
gpt4 key购买 nike

我在一家托管公司工作,提供 ASP.Net 3.5 托管。老实说,我们通常提供相当好的正常运行时间和速度。然而,我们的共享池之一遇到了问题。像往常一样,我们尝试最大限度地增加一个池中可以运行的网络数量。

最近我们遇到了持续挂起的问题。该进程不会崩溃,但开始显示 OutOfMemoryExceptions 或停止处理请求。我们认为这是其中一个应用程序的责任(如果知道是哪一个应用程序就好了)。

我有一些用 WinDbg 处理过的内存转储。我已经运行了 f.e:

!dumpheap -stat

该方法提供对象的全局内存使用情况。没什么了不起的......我也检查过:

~*e!clrstack 

我看到各种非托管线程。在那些被管理的人中会出现这样的堆栈:

[HelperMethodFrame_1OBJ: 0f30e320]            
System.Threading.WaitHandle.WaitMultiple(System.Threading.WaitHandle...
0f30e3ec 7928b3ff System.Threading.WaitHandle.WaitAny(System.Threading...
0f30e40c 7a55fc89 System.Net.TimerThread.ThreadProc()...
0f30e45c 792d6e46 System.Threading.ThreadHelper.ThreadStart_Context(System...
0f30e468 792f5781 System.Threading.ExecutionContext.runTryCode(System...

至少,我还没有看到异常抛出或类似的情况(在那一刻)。我还访问了 Tess Ferrandez 编写的两个脚本,用于计算 session 数量和大小。这里也没有希望的结果。任何奇特或非凡的东西(平均 24000 字节)。

我想知道您面对此类问题时通常采用什么策略。您曾经使用过 Microsoft 支持吗?

非常感谢!

最佳答案

非常好的问题,糟糕的 asp.net 可以将所有共享的 Web 应用程序卡在同一个池上......

好吧,让我们看看...如果问题出在内存上,请获取 VMMap来自 Sysinternals,以及 Process Explorer

运行它们,然后从进程资源管理器中找到您想要调查的池的 PID 号,它位于 inetinfo.exe 下,并且可能具有名称 aspnet_wp.exe强>.

现在,在 VMMap 上添加用于监视此池的 PID,以获取帮助,瞧,您会看到内存和打开的图像(aspx 文件),它们可能很多并且会产生问题...您要处理的文件要查看的内容位于 ASP.NET Framework 的临时位置,但您可以连接它们并从巫婆站点查看它们的来源。

如果问题不在内存上,而是程序员创建了错误的循环,甚至创建了线程 sleep ,那么我认为进程资源管理器是一种调查池并搜索消耗功率的方法。

附加

也许每 15 分钟一次池回收可以解决这个问题?

更多信息

在这些视频中,有很多有关 VMMap 和内存管理器的信息。 Mysteries of Windows Memory Management, Part 1 ,和, Part 2

关于asp.net - 调试 ASP.Net 共享池技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4186866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com