Quel W3WP.exe correspond à quel application pool ?

English Version

Avec l'arrivée de IIS 6 (fourni avec Windows 2003), la notion d'application pool a fait son apparition. Un application pool est un moyen d'isoler une application web, de manière à ce que les erreurs qu'elle pourraient subir n'impactent pas les autres applications. Si la configuration par défaut pour un application pool est utilisée (pour être plus précis, si vous n'utilisez pas de Web Garden), un seul processus W3WP.exe (Worker Process) est utilisé pour exécuter les applications hébergées par cet application pool. Dans le schéma ci-dessous, les applications A & B sont hébergées dans le même application pool (Pool 1) alors que les application C & D ont un application pool distinct (respectivement Pool2 & Pool 3).

Un problème survient lorsque vous avez une action à effectuer sur une application web comme, par exemple, la génération d'un dump pour cette application. En effet, dans le Gestionnaire des tâches, il est impossible de différencier clairement quelle application tourne dans quel application pool et l'obtention du PID (Process Identifier) hébergeant une application spécifique peut se révéler compliquée…

Sous IIS 6 (Windows 2003) :

Le moyen le plus simple pour répondre à ce problème est de faire appel au script iisapp.vbs situé dans le répertoire %windir%\system32\ . Le lancement de ce script sans argument permet d'afficher les PIDs des processus W3WP.exe et les application pools correspondants :

Sous IIS 7 (Windows 2008) et IIS 7.5 (Windows 2008 R2) :

Sous IIS 7, le script iisapp.vbs a été supprimé pour être intégré dans l'outil appcmd.exe permettant d'administrer IIS en ligne de commande. Cet utilitaire est situé dans le répertoire %windir%\system32\intesrv.

ATTENTION : Pour accéder à cet outil, vous devez lancer l'invite de commande (CMD) avec des droits d'administrateur, sinon la commande ne fonctionnera pas. Pour le faire simplement, cliquez droit sur le raccourci de l'invite de commande et sélectionnez "Run as Administrator".

Ensuite, naviguez vers le répertoire où est situé appcmd (cd %windir%\system32\intesrv\) et tapez la commande suivante : appcmd list wp.Ceci listera toutes les instances du processus W3WP.exe qui sont présentes sur le serveur IIS avec les PID et les application pools.

Appcmd fournit d'autres commandes assez sympathiques comme appcmd list sites et appcmd list appPools pour lister les sites webs et les application pools présents sur le serveur IIS. Pour plus d'information à propos de l'utilitaire appcmd, vous pouvez consulter l'article suivant :

Getting Started with AppCmd

by Paul Cociuba - French ASP.net / IIS Support Team & Traduit par Sylvain Lecerf