PID пула приложений IIS - PullRequest
       32

PID пула приложений IIS

43 голосов
/ 14 апреля 2009

Кто-нибудь знает способ получить пул приложений, связанный с идентификатором процесса? Я использую Win32_Process для запроса сервисов W3WP и возврата PID, теперь я пытаюсь связать пул приложений с ним.

Ответы [ 9 ]

91 голосов
/ 14 сентября 2009

В Windows Server 2008 это изменилось.

в systemroot \ system32 \ inetsrv вы найдете appcmd.exe

с использованием

appcmd list wp

вы получите список всех рабочих процессов и то, какое приложение они обслуживают.

17 голосов
/ 14 апреля 2009

Если вы просто используете командную строку, чтобы выяснить это ad-hoc, вы можете сделать это тоже:

Сценарий уже помещен в systemroot \ system32 на Windows Server 2003, поэтому просто перейдите в командную строку и введите iisapp.vbs (.vbs не обязателен), и вы получите мгновенный список всей информации пула приложений. ты всегда хотел знать Вам может потребоваться ввести cscript iisapp.vbs, если CScript не является хостом сценария WSH по умолчанию.

Давайте посмотрим пример вывода:

W3WP.exe PID: 1468 AppPoolId: AppPoolForSite1.com
W3WP.exe PID: 3056 AppPoolId: AppPoolForSite2.com
W3WP.exe PID: 1316 AppPoolId: AppPoolForSite3.com

Прямо изо рта лошади, документы Microsoft это .

8 голосов
/ 23 октября 2010

Если вы работаете в Windows Server 2008 и хотите, чтобы PID передавался в другой сценарий или команду, вы можете использовать это:

c:\windows\system32\inetsrv\appcmd list wps /apppool.name:"My Application Pool" /text:WP.NAME

Например, чтобы создать пакетный скрипт, который создает дамп памяти определенного пула приложений, используйте это:

c:\windows\system32\inetsrv\appcmd list wps /apppool.name:"My Application Pool" /text:WP.NAME > "%temp%\pid.txt"
for /F %%a in (%temp%\pid.txt) do c:\debugger\adplus.exe -hang -o d:\dumps -p %%a
pause
7 голосов
/ 11 октября 2013

Я только что обнаружил, что вы также можете найти это в пользовательском интерфейсе для IIS 7. Выберите свой узел веб-сервера и откройте «Рабочие процессы». Это покажет имя каждого пула приложений вместе с идентификатором процесса и сведениями об использовании.

3 голосов
/ 09 декабря 2011

Вы можете использовать диспетчер задач для просмотра имени пользователя, под которым запускается процесс (который в целом совпадает с именем пула приложений), и идентификатора процесса, но вы должны включить эти столбцы в диспетчере задач, и он также предполагается, что имя пользователя, под которым запускается процесс, совпадает с именем пула приложений (насколько мне известно, это имя по умолчанию, если только не используется Sharepoint и т. п.).
Также обратите внимание, что все методы, перечисленные на этой странице, могут отображать только те процессы, которые выполняются в данный момент, а это означает, что если ваш конкретный процесс завершил работу из-за простоя, вы должны сначала использовать сайт, чтобы вывести процесс в список , а в вашем случае это означает, что вы должны сначала получить доступ ко всем сайтам, чтобы убедиться, что процесс, связанный с ними, запущен.

3 голосов
/ 14 апреля 2009
ServerManager serverManager = new ServerManager();
ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;

Попробуйте поработать с этим, и вы получите то, что вам нужно.

1 голос
/ 02 февраля 2017

Откройте диспетчер IIS («Выполнить»> «Inetmgr»), выберите корневой уровень в левом дереве навигации по сайту и в «Панели представления функций» выберите «Рабочие процессы»

Нажмите «Рабочие процессы», чтобы получить подробную информацию обо всех рабочих процессах, которые в данный момент выполняются

Из этого списка вы получите имя пула приложений, идентификатор процесса

1 голос
/ 01 июня 2016

Это должно сделать это.

public string getAppPoolName(int pid)
{            
    ServerManager serverManager = new ServerManager();

    ApplicationPoolCollection apc = serverManager.ApplicationPools;

    foreach (var app in apc)
    {
        var workers = app.WorkerProcesses;

        foreach (var w in workers)
        {                   
            if (w.ProcessId == pid)
            {
                return app.Name;
            }
        }
    }

    return string.Empty;
}
0 голосов
/ 18 января 2016

PID и пул приложений с указанием названия:

$AppPoolName = 'AppPoolForSite1'
(Get-ItemProperty IIS:\AppPools\$AppPoolName -Name WorkerProcesses).Collection.processId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...