【发布时间】:2010-11-15 17:01:23
【问题描述】:
我在一家托管公司工作,提供 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 编写的两个脚本,用于计算会话数和大小。这里也不是很有希望的结果。任何特殊或显着的东西(平均 24000 字节)。
我想知道你在面对这类问题时通常使用什么样的策略。您曾经使用过 Microsoft 支持吗?
非常感谢!
【问题讨论】:
-
您在每个池中运行多少个站点?
-
了解服务器有多少内存以及它是 32 位还是 64 位 windows2003 也很有用。
-
感谢 Kev,同一个池中有 200 到 250 个(小)网站。现在出现了第一个问题。 4GB RAM,Windows 2003 32 标准。据我所知,服务器拥有他需要的所有内存。
标签: asp.net web-applications iis-6 shared-hosting