Надеюсь, кто-нибудь поможет мне разобраться в этом. Я пытаюсь отладить некоторые ошибки COM +, которые мы видим в нашей производственной среде, и некоторые из них сообщают, что куча рабочего стола исчерпана, поэтому я для начала установил инструменты отладки Windows и DHeapmon после прочтения подробного руководства по куче рабочего стола: http://blogs.msdn.com/b/ntdebugging/archive/2007/01/04/desktop-heap-overview.aspx
В принципе, насколько я понимаю - каждому рабочему процессу IIS (w3wp.exe) должна быть выделена (неинтерактивная) куча рабочего стола; по умолчанию 512к. В нашем производственном блоке более 30 сайтов, и когда я запускаю DHeapmon для отчета о количестве рабочих столов, он не только не сообщает о более чем 30 рабочих столах, как я ожидал (по 1 для каждого процесса, а затем и о фактическом интерактивном рабочем столе Windows на компьютере). server) - сообщает однозначное число рабочих столов.
Я проверил, что мы не разделяем пулы приложений или рабочие столы, поэтому я должен видеть рабочий стол для каждого процесса, верно?
У меня был один вопрос: если рабочий процесс IIS IDLE, он должен быть убит - по умолчанию, я думаю, 20 минут. Однако я зашел на один из бездействующих веб-сайтов, он действительно породил новый w3wp.exe для этого сайта, затем снова запустил DHeapmon, и он по-прежнему сообщил о том же количестве рабочих столов.
Что мне не хватает? Есть ли лучший способ получить информацию, которая мне нужна?
Любая помощь приветствуется!
Нет, каждое пространство сеанса имеет один рабочий стол. еще раз прочтите раздел ссылки, который вы озаглавили «Создание основы: пространство сеанса» из статьи: «Пространство сеанса разделено на четыре области: пространство изображений сеанса, структура сеанса, пространство просмотра сеанса и выгружаемый пул сеанса ... Область просмотра сеанса содержит отображенные представления для сеанса, включая кучу рабочего стола "
Чтобы получить дополнительную кучу рабочего стола, вам необходимо запустить отдельные пулы с отдельными учетными данными. Это, как говорится, исчерпание кучи рабочего стола в серверном приложении говорит мне, что в коде есть какая-то ошибка или просто плохое программирование. Куча рабочего стола предназначена для элементов пользовательского интерфейса. Другая возможность состоит в том, что IIS работает от имени того же пользователя, что и существующая учетная запись службы, в которой есть некорректный код.
Наконец, да, простаивающие процессы w3wp будут убиты после тайм-аута, но это не обязательно приведет к появлению нового рабочего стола, поскольку это зависит от пользовательского контекста, создающего его.