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,它仍然報告了相同數量的桌面。
我錯過了什麼?有沒有更好的方法來獲取我想要的資訊?
任何幫助表示讚賞!
不,每個會話空間都有一個桌面。重新閱讀文章中標題為“奠定基礎:會話空間”的連結部分:“會話空間分為四個區域:會話圖像空間,會話結構,會話視圖空間和會話分頁池……會話視圖空間包含會話的映射視圖,包括桌面堆"
要獲得額外的桌面堆,您需要使用單獨的憑據執行單獨的池。據說在伺服器應用程序上用完桌面堆告訴我程式碼中存在一些錯誤或只是糟糕的程式。桌面堆用於 UI 元素。另一種可能性是 IIS 以與現有服務帳戶相同的使用者身份執行,其中包含一些錯誤程式碼。
最後是空閒的 w3wp 程序將在超時後被殺死,但這不一定會產生一個新桌面,因為它取決於創建它的使用者上下文。