Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe

worker process, pool d’application

Poster un commentaire

Je continue ma petite série de vocabulaire et de concepts.

Les concepts couverts par cet article sont:

  • les pools d’application
  • les worker process

Pool d’application

Apparu avec IIS 6.0, le pool d’application est un élément important de l’architecture de IIS. Il s’agit d’un conteneur capable d’héberger un ou plusieurs sites web à l’intérieur d’un worker process. Un site web tourne toujours dans un pool d’application et un seul.

2014-08-09_23-32-21

Les sites du pool d’application héritent des réglages du pool. Si le pool redémarre. Parmi les paramètres d’un pool, se trouve le choix d’une version de .Net. Un pool ne peux héberger qu’une version de .Net (ou aucune si l’application n’est pas une application .Net!).

Lorsqu’un pool redémarre tous les sites du pool redémarrent en même temps. C’est ou ce n’est pas un problème. Ayez également en tête qu’un pool peut parfaitement recycler plusieurs fois par jour, ce n’est pas forcément anormal, mais c’est un problème avec les sessions non distribuées. La stratégie de recyclage est un des paramètres du pool.

 

Il n’existe pas de limites en dur au nombre de pool que IIS peut héberger. Potentiellement ils peuvent être des milliers. Toutefois il existe une limite physique due au fait qu’un pool consomme des ressources pour ses propres besoins (mémoire et CPU).

Sans que ce soit une science exacte, on peut avoir en tête ceci:

  • un pool avec une page statique a besoin d’environ 3 Mo de mémoire
  • un pool avec un site ASP.NET consomme environ 10 Mo de mémoire

 

Processus de travail

Un worker process (WP) est un processus responsable de:

  • héberge et exécute les applications du pool
  • la réception des requêtes émises vers un serveur web en direction d’un pool spécifique

Chaque pool lance donc par défaut un worker process qui hérite des paramètres du pool et notamment les paramètres de sécurité.

On peut également configurer un pool pour lancer plusieurs WP. On parle de web garden.

Note: ne pas confondre web garden et web farm. Un web garden est composé de plusieurs processus sur un même serveur, tandis qu’un web farm est composé de plusieurs serveurs.

 

Pour activer cette configuration il suffit de lancer IIS Manager et de se rendre dans la configuration avancée du pool:

2014-08-10_09-47-52

Le WP reçoit des requêtes en provenance de l’extérieur. En configuration web garden, lorsque celles-ci tendent à s’accumuler, IIS créée un WP supplémentaire (à concurrence de la limite fixée). IIS reroute ensuite les nouvelles requêtes vers ce WP afin de soulager le premier. Lorsque la situation s’améliore, les WP supplémentaires seront supprimés afin de libérer des ressources.

La configuration web garden peut s’envisager dans des situations comme:

Si vous rencontrez des latences élevées à cause de l’utilisation de la CPU ou de la mémoire, la ferme ne sera en rien une solution et risque même d’aggraver la situation.

Vous ne résoudrez également pas ainsi les problèmes d’applications multi-thread qui accèdent à des ressources mono-threads comme un fichier.

 

Les WP apparaissent dans Windows par le processus w3wp.exe.

Pour des raisons de débogage il est possible d’attacher Visual Studio à un WP. Lorsqu’il y en a qu’un seul ce n’est pas difficile. Si on en a plusieurs pools et donc plusieurs WP, il faut faire une petite recherche.

Dans les anciennes versions de IIS (< IIS 7.0) on avait un script iisapp.vbs que l’on pouvait lancer avec cscript.exe. Maintenant on doit utiliser appcmd.exe.

  • On ouvre une console de commande
  • On se rend dans le répertoire %SystemRoot%\System32\inetsrv
  • On lance la ligne de commande:
    appcmd list wp

 

Note: si ce message apparaît:

AppCMD « ERROR ( message:The WAS service is not available – try starting the service first.)

Cela signifie que la console n’a pas été lancée en élévation de privilège (en tant qu’administrateur) ou bien que le service WAS n’a pas démarré.

Si tout va bien ceci s’affiche:

2014-08-09_20-46-28

L’exemple n’est pas terrible puisque un seul WP apparaît. Mais vous noterez que l’on peut obtenir ainsi le pool d’application qui lance le site. Le nombre entre parenthèse est le PID qui est unique. C’est lui qui va nous intéresser pour attacher notre processus à VS.

 

Si la ligne de commandes vous donne des boutons, on peut faire la même chose depuis IIS Manager.

2014-08-09_20-53-49

On clique sur l’icône WP.

2014-08-09_20-55-22

Double cliquez sur un des WP et vous voyez apparaître les demandes de traitement en cours (s’il y en a).

 

 

 

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s