IIS 응용 프로그램 풀 PID
-
09-09-2019 - |
문제
프로세스 ID와 관련된 응용 프로그램 풀을 얻는 방법에 익숙한 사람이 있습니까? Win32_Process를 사용하여 W3WP 서비스를 쿼리하고 PID를 반환하고 있습니다. 이제 앱 풀을 연결하려고합니다.
해결책
명령 줄을 사용하여 임시를 파악하는 경우 다음에도 할 수 있습니다.
스크립트는 이미 Windows Server 2003의 SystemRoot System32에 이미 배치되어 있으므로 간단히 명령 프롬프트로 이동하여 iisapp.vbs (.VBS는 선택 사항)를 입력하면 모든 앱 풀 정보의 인스턴트 목록이 있습니다. 항상 알고 싶었습니다. cscript가 기본 wsh 스크립트 호스트가 아닌 경우 cscript iisapp.vbs를 입력해야 할 수도 있습니다.
출력의 예를 보자.
W3WP.exe PID: 1468 AppPoolId: AppPoolForSite1.com
W3WP.exe PID: 3056 AppPoolId: AppPoolForSite2.com
W3WP.exe PID: 1316 AppPoolId: AppPoolForSite3.com
말의 입에서 직접 마이크로 소프트는 문서를 문서화합니다 이것.
다른 팁
Windows Server 2008에서 이것은 변경되었습니다.
SystemRoot System32 inetSrv에서 appcmd.exe를 찾을 수 있습니다.
사용
APPCMD 목록 wp
모든 작업자 프로세스 목록과 그들이 제공하는 앱 풀 목록을 얻습니다.
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
방금 IIS 7의 UI에서 찾을 수 있음을 알게되었습니다. 웹 서버 노드를 선택하고 "작업자 프로세스"를 열었습니다. 여기에는 프로세스 ID 및 활용 세부 정보와 함께 각 응용 프로그램 풀의 이름이 표시됩니다.
ServerManager serverManager = new ServerManager();
ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;
이것으로 작업하면 필요한 것을 얻을 수 있습니다.
작업 관리자를 사용하여 프로세스가 실행되는 사용자 이름 (일반적으로 응용 프로그램 풀 이름과 동일) 및 프로세스 ID를 볼 수 있지만 작업 관리자에서 이러한 열을 켜야합니다. 프로세스가 실행되는 사용자 이름은 응용 프로그램 풀 이름과 동일합니다 (SharePoint 등을 사용하지 않는 한 내가 아는 한 기본값입니다).
또한이 페이지에 나열된 모든 방법은 현재 실행중인 프로세스 만 표시 할 수 있습니다. 즉, 유휴 시간으로 인해 특정 프로세스가 종료 된 경우 목록에 프로세스를 제기하기 위해 사이트를 사용해야합니다. , 귀하의 경우에는 먼저 모든 사이트에 액세스하여 관련 프로세스가 실행되고 있는지 확인해야합니다.
이렇게해야합니다.
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;
}
Open IIS Manager (run> inetmgr), 왼쪽 사이트 탐색 트리에서 루트 레벨을 선택하고 "기능보기 패널"에서 "작업자 프로세스"를 선택하십시오.
현재 실행중인 모든 작업자 프로세스에 대한 세부 정보를 얻으려면 "작업자 프로세스"를 클릭하십시오.
이 목록에서 응용 프로그램 풀 이름, 프로세스 ID를 얻을 수 있습니다.
이름을 부여하는 PID 및 애플리케이션 풀 :
$AppPoolName = 'AppPoolForSite1'
(Get-ItemProperty IIS:\AppPools\$AppPoolName -Name WorkerProcesses).Collection.processId