我们有一台 Win2K3 服务器,上面托管着 30 多个网站。每个网站都配置了自己独特的应用程序池,这样我们就可以根据需要手动回收特定网站,而不会终止其他网站的会话。
据我所知,这种设置的结果是每个应用程序池工作进程都分配一个桌面堆(通常为 512 kb),并且我们限制了可以提供服务的应用程序池的数量。 http://blogs.msdn.com/b/david.wang/archive/2006/01/25/security-considerations-of-usesharedwpdesktop-on-iis6.aspx
问题:
我们发现,偶尔会触发 COM+ 错误,大概是由于桌面堆达到 512 kb 的限制所致——某些站点变得无响应(或出现错误),直到我们手动回收该特定应用程序池。我知道我可以将桌面堆限制增加到 1024,并进行其他调整/调整,但我的任务是找出导致一个站点的堆达到最大值而不是另一个站点的堆最大值的确切原因。似乎当我们开始看到 COM+ 错误时,它影响的站点是随机的——小型站点或大型站点(使用率较高)。
是根据进程id吗?流量吗?
任何关于如何进一步理解这一点的建议都是很好的。谢谢!
杰格
答案1
COM+ 就像是在说 Windows 错误。你能具体说一下吗?
要正确分析桌面堆问题,您需要 DHeapMon 和 Windbg。两者都可以从 Microsoft 下载,这里有一篇有用的文章来描述如何进行分析:
如何使用 DHeapMon.exe 解决桌面堆问题
http://blogs.msdn.com/b/alejacma/archive/2008/07/29/how-to-use-dheapmon-exe-to-troubleshoot-desktop-heap-issues.aspx
您很可能会将其本地化到您所托管的应用程序中,并且这将由开发人员来完成。