DHeapmon 未报告 IIS6 中预期的桌面总数

DHeapmon 未报告 IIS6 中预期的桌面总数

希望有人能帮助我理解这一点。我正在尝试调试我们在生产环境中看到的一些 COM+ 错误,其中一些报告桌面堆已耗尽,因此在阅读了权威的桌面堆指南后,我安装了 Windows 调试工具和 DHeapmon 作为入门工具: http://blogs.msdn.com/b/ntdebugging/archive/2007/01/04/desktop-heap-overview.aspx

基本上,据我所知 -- 应为每个 IIS 工作进程 (w3wp.exe) 分配一个 (非交互式) 桌面堆;默认值为 512k。我们的生产机上有 30 多个站点,当我运行 DHeapmon 报告桌面数量时,它不仅没有像我预期的那样报告 30 多个桌面(每个进程 1 个,然后是服务器上实际的 Windows 交互式桌面)-- 它只报告了一个数字的桌面数量。

我确认我们没有共享应用程序池或桌面,所以我应该看到每个进程的一个桌面,对吗?

我有一个疑问——如果 IIS 工作进程处于空闲状态,它应该被终止——我认为默认值是 20 分钟。但是,我访问了一个空闲网站,它确实为该网站生成了一个新的 w3wp.exe,然后再次运行 DHeapmon,它仍然报告了相同的桌面数量。

我遗漏了什么?有没有更好的方法来获取我所需的信息?

任何帮助都将不胜感激!

答案1

不,每个会话空间都有一个桌面。重新阅读文章中标题为“奠定基础:会话空间”的链接部分:“会话空间分为四个区域:会话映像空间、会话结构、会话视图空间和会话分页池...会话视图空间包含会话的映射视图,包括桌面堆”

要获取额外的桌面堆,您需要使用单独的凭据运行单独的池。也就是说,服务器应用程序上的桌面堆用完说明代码中存在一些错误或只是编程不当。桌面堆用于 UI 元素。另一种可能性是 IIS 以与现有服务帐户相同的用户身份运行,该服务帐户中包含一些错误代码。

最后,是的,空闲的 w3wp 进程将在超时后被终止,但这不一定会产生新的桌面,因为它取决于创建它的用户环境。

相关内容