Cartographie des application pools au travers d’IIS, de Performance Monitor et du système/Mapping of the application pools across IIS, Performance Monitor and the System.

[MAJ 10/03/2017] Performance Monitor (ou PerfMon) est l’outil indispensable pour monitorer les performances de vos serveurs Windows. L’un des problèmes les plus fréquents avec Perfmon est d’identifier une instance particulière d’un processus. En effet PerfMon les numérotent de manière séquentielle (ici pour des worker processes IIS) : w3wp, w3wp#1, w3wp#2, w3wp#3 … Il est donc difficile de faire la correspondance avec un ID de processus (PID). Heureusement un workaround existe : https://techcommunity.microsoft.com/t5/ask-the-performance-team/perfmon-identifying-processes-by-pid-instead-of-instance/ba-p/374561.

Dans le cadre d’un serveur IIS, il ne nous reste plus qu’à faire le lien entre le PID et l’application concernée via le task manager (ou autres outil comme pslist, PowerShell).

Deux possibilités :

  • Pour le peu que l’on utilise l’identité par défaut depuis IIS 7.5 (cf. ApplicationPoolIdentity), il est alors facile de faire la correspondance (Identité = Nom de l’application pool – voire le nom du site web si celui ci a été créé via la console IIS) comme en atteste la capture d’écran ci-dessous:

applicationpoolidentity

  • Dans d’autres cas cela parait un peu plus compliqué 🙂

applicationpoolidentity2

Je vous propose dans cette article un script PowerShell (disponible ici) qui vous offrira un état des lieux comme celui-ci et sans devoir effectuer par le workaround précédemment évoqué (une solution universelle en somme) :

Get-W3WPData

On constate rapidement que :

  • Nous avons 6 applications réparties sur 5 sites (le site www.northwindtraders.com hébergent 2 applications : www.northwindtraders.com et www.northwindtraders.com/HR)
  • L’application pool www.northwindtraders.com est utilisé par les sites www.northwindtraders.com et intranet.northwindtraders.com
  • Le site www.contoso.com est configuré en mode « web gardening » et actuellement 2 worker processes prennent en charge les requêtes à destination de ce site.
  • Les colonnes PID et Instance  nous permettent de faire le lien entre les PID et les instances sous PerfMon. Dans le cas de la deuxième ligne le processus 1512 correspond à l’instance w3wp#1 et le processus 1520 correspond à l’instance w3wp#2 (l’ordre est préservé)

[Update 03/10/2017] Performance Monitor (or Perfmon) is the essential tool to monitor the performance of your Windows servers. One of the most common problems with Perfmon is to identify a particular instance of a process. Indeed PerfMon numbers them sequentially (here for the IIS worker processes): w3wp, w3wp # 1, w3wp # 2, # 3 w3wp … It is difficult to match a process ID (PID). Fortunately, a workaround exists: https://techcommunity.microsoft.com/t5/ask-the-performance-team/perfmon-identifying-processes-by-pid-instead-of-instance/ba-p/374561.

As part of an IIS server, it remains for us to make the connection between the PID and the relevant application via the task manager (or other tool like pslist, PowerShell).

 

Two possibilities :

  • If the default identity for IIS 7.5 (cf. ApplicationPoolIdentity) is used, it is easy to make the connection (ID = Name of the application pool – even the name of the website if it has created via the IIS console) as illustrated in the screenshot below:

applicationpoolidentity

  • In other cases it seems a little more complicated 🙂

applicationpoolidentity2

I propose in this article a PowerShell script (available here) that offers an inventory like this and without having to perform the previously mentioned workaround (an universal solution):

Get-W3WPData

We quickly found that:
  • We have 6 applications spread over 5 sites (The site www.northwindtraders.com hosts 2 applications www.northwindtraders.com and www.northwindtraders.com/HR)
  • The www.northwindtraders.com application pool is used by the www.northwindtraders.com and intranet.northwindtraders.com sites
  • The site www.contoso.com is configured for « web gardening » mode and 2 worker processes currently support queries to this site.
  • The PID and Instance columns allow us to make the connection between the PID and the instances in PerfMon. In the case of the second line the PID 1512 matches the instance w3wp#1 and the PID 1250 matches the instance w3wp#2 (the order is preserved)
Laurent.
Feel free to share:)