Fonctionnalités du service d'activation de processus Windows (WAS)

Auteur Thomas Deml

Le service d'activation de processus Windows (WAS) d'IIS 7 est le composant clé qui fournit des fonctionnalités de modèle de processus et de configuration aux applications Web et aux services Web. La tâche principale du WAS consiste à gérer les pools d'applications. Les pools d'applications sont des conteneurs de configuration qui représentent l'environnement d'hébergement pour les groupes d'URL.

Lorsqu'un client HTTP demande une URL, HTTP.SYS mappe la requête à une file d'attente de requête du pool d'applications. Un processus de travail pour la file d'attente de requêtes du pool d'applications est généré par WAS et le processus de travail exécute le code nécessaire pour envoyer une réponse. L'une des principales tâches du WAS consiste à gérer les processus de travail qu'il a générés. Autrement dit, WAS surveille leur intégrité, les recycle si nécessaire et s'assure qu'aucun d'entre eux ne consomme plus de ressources que spécifié dans la configuration AppPool correspondante. WAS est également l'arbitre et le collecteur pour les données d'exécution et d'état, par exemple les compteurs de performances, l'état du site et du pool d'applications.

Diagramme architectural

IIS 7.0 Architecture

Fonctionnalités du modèle de processus

La prise en charge de 100 00 sites Web ou plus à héberger sur la même machine physique est une exigence essentielle pour les environnements d'hébergement de masse actuels. Le code en cours d'exécution sur ces sites Web n'est généralement pas bien testé, le cas échéant. Pour prendre en charge ces exigences, WAS doit fournir un modèle de processus puissant et une gestion efficace des ressources.

Gestion efficace des ressources

Activation à la demande

Les ressources comme la RAM et l'UC sont rares dans les scénarios multilocataires. WAS démarre un processus de travail IIS seulement quand les demandes d'un site Web particulier ou d'une application Web arrivent.

Délai d'inactivité

Étant donné que les ressources sont généralement rares, WAS peut arrêter des applications Web en fonction d'un délai d'inactivité configurable.

Surveillance de l’intégrité

Pour garantir que leur intégrité, le WAS surveille les processus de travail qu'il a générés. Les messages d'intégrité sont régulièrement envoyés à chaque processus de travail en cours d'exécution. Si le processus de travail ne répond pas dans un intervalle de temps configurable, il sera recyclé ou tué. De cette façon, les blocages non détectés dans les processus de travail sont automatiquement corrigés en redémarrant ce dernier.

Limite de démarrage

Une partie de la fonctionnalité de protection rapide contre la défaillance est la limite de démarrage. Si un processus de travail ne renvoie pas au WAS dans la limite de démarrage configurable, il est tué et le compteur de protection rapide contre la défaillance est incrémenté. Les pools d'applications sont arrêtés, c'est-à-dire le redémarrage du processus de travail ne sera plus essayé, si le compteur de protection rapide contre la défaillance atteint une limite configurable dans un délai configurable. Cela empêche les scénarios dans lesquels les processus de travail se bloquent ou se bloquent pendant le démarrage.

Limite d'arrêt

Un processus de travail doit également s'arrêter dans une limite configurable. Si l'arrêt ne se produit pas dans ce délai, le processus de travail est tué par WAS. Cette mise à mort empêche la surutilisation des ressources en raison des processus suspendus dans leur phase d'arrêt. Les paramètres d'arrêt supplémentaires permettent à un exécutable d'être démarré (par exemple, un débogueur) lorsque l'arrêt ne se termine pas dans le délai imparti.

Affinité avec les UC

Les paramètres de configuration permettent au WAS de démarrer des processus de travail qui ont des affinités avec une ou plusieurs UC. Cela empêche toute interférence entre les locataires s'ils partagent la même machine physique.

Profil utilisateur

Le WAS peut démarrer des processus de travail avec ou sans charger le profil utilisateur.

Sécurité

Identité du pool d’applications

Les processus de travail IIS peuvent s'exécuter en tant que compte personnalisé, compte prédéfini (LocalService, LocalSystem, NetworkService) ou identité de pool d'applications (par défaut). L'utilisation de l'identité du pool d'applications est recommandée, car elle ne nécessite pas la gestion des mots de passe et les identités de pool d'applications respectent déjà le principe du privilège minimum. Les comptes intégrés ne nécessitent pas également la gestion des mots de passe. Si une identité d'utilisateur personnalisée est utilisée, le mot de passe est automatiquement chiffré. Les paramètres de configuration peuvent être répliqués sur plusieurs ordinateurs en partageant les clés de chiffrement de configuration entre les machines.

Fonctionnalités de l'objet de traitement

Les objets de traitement permettent aux administrateurs de restreindre les processus de travail à une limite d'UC particulière. Une action configurable est effectuée si cette limite d'UC est dépassée. Les objets de traitement vérifient également que les processus générés par le processus de travail sont arrêtés.

Isolation et sécurité de la configuration

Avant de démarrer un pool d'applications et son processus de travail, le WAS génère un fichier de configuration unique pour ce pool d'applications. Les pools d'applications ont également des paramètres de configuration pour exécuter des pools d'applications sous des identités uniques. L'isolation peut toutefois être obtenue même si la même identité est utilisée. WAS crée un identificateur de sécurité unique (SID) pour chaque pool d'applications. Le fichier de configuration du pool d'applications est ensuite sécurisé avec ce SID unique. Cela garantit que les fichiers de configuration du pool d'applications ne peuvent être lus que par les administrateurs et le pool d'applications lui-même. Même les autorisations de fichier peuvent être configurées à l'aide de ce SID unique.

Diagnostics et surveillance

Journalisation des événements

Les événements concernant la configuration, le recyclage, le démarrage ou l'arrêt des processus de travail non valides sont signalés au journal des événements système.

Exécution des demandes en cours

WAS expose une interface de contrôle d'état et d'exécution qui permet aux scripts et aux outils d'interroger les demandes en cours d'exécution d'un processus de travail particulier. Cela est utile pour trouver des demandes qui se bloquent ou qui prennent beaucoup de temps.

Compteurs de performance

Tous les compteurs de performance d'IIS sont synthétisés via WAS. WAS collecte ces compteurs de performance, car les compteurs IIS sont des applications Web et basées sur site peuvent vivre dans différents pools d'applications.

Recyclage

Le recyclage permet l'actualisation des processus de travail sans perdre une seule requête en raison d'un temps d'arrêt. Il se fait via une fonctionnalité appelée « recyclage qui se chevauche ».

Recyclage qui se chevauche

WAS effectue cette opération en créant un nouveau processus de travail parallèle à l'ancien processus qui gère toujours les demandes. Une fois que le nouveau processus de travail est en cours, il commence à récupérer des demandes à partir de la file d'attente de demandes pendant que l'ancien processus de travail est invité à arrêter de récupérer des demandes. Une fois que l'ancien processus de travail a terminé toutes les demandes en cours d'exécution, il s'arrête. Cette fonctionnalité est appelée « recyclage qui se chevauche ». Il garantit qu'aucune demande n'est perdue pendant un recyclage.

Configuration du recyclage

Les paramètres de recyclage sont configurables dans le système de configuration IIS.

Recyclage planifié

Les clients peuvent souhaiter recycler leurs applications selon une planification régulière. Le recyclage des paramètres de configuration peut être planifié régulièrement, par exemple toutes les 4 heures, tous les jours à 1 heure, etc.

Recyclage basé sur la consommation de mémoire

Au fil du temps, des fuites de mémoire peuvent se produire dans les applications. WAS peut surveiller la consommation de mémoire de chaque processus de travail pour s'assurer qu'aucun processus de travail n'utilise plus que sa limite préconfigurée. L'atteinte d'un seuil de mémoire virtuelle ou privée configuré déclenche le recyclage d'un processus de travail.

Recyclage basé sur le nombre de demandes

Le recyclage peut également être configuré en fonction du nombre de demandes gérées par un processus de travail particulier.

Recyclage personnalisé

Le code personnalisé peut personnaliser les statistiques d'intégrité et déclencher un recyclage via un appel d'API à l'exécution WAS et à l'API d'état.

Orphelinage de processus

Certaines erreurs se produisent uniquement dans un environnement de production. L'arrêt des processus de travail garantit la mise à jour, mais la résolution de ces erreurs devient difficile, par exemple si le processus de travail défaillant doit être débogué. La fonctionnalité d'orphelinage de processus dans WAS permet aux processus de travail d'être recyclés sans tuer le processus de travail ayant échoué. À présent, un débogueur peut être attaché à celui-ci. Les paramètres supplémentaires d'orphelinage de processus permettent l'exécution d'un processus (par exemple, un débogueur) si l'orphelinage se produit.

Gestion de l'état du pool d'applications

Les pools d'applications peuvent être arrêtés, recyclés ou démarrés via les API disponibles publiquement. C'est notamment le cas si une application doit être mise hors connexion ou si le recyclage doit être effectué en fonction de paramètres différents de ce qui est configurable dans le fichier applicationhost.config.

Fonctionnalités WAS supplémentaires

Fonctionnalités d'équilibrage de charge

HTTP.SYS écoute toujours sur le réseau et retourne un message d'erreur HTTP 500 si les demandes ne sont pas récupérées par un pool d'applications. Il s'agit d'un problème, car pour un équilibreur de charge de niveau 5 (TCP/IP), une erreur HTTP 500 ressemble à une connexion TCP/IP valide. Un paramètre de configuration WAS peut permettre à HTTP.SYS de rejeter les connexions au lieu d'envoyer des réponses HTTP.

WAS peut être configuré pour démarrer des processus de travail avec les paramètres suivants :

Prise en charge WoW64

WAS peut démarrer des processus de travail de 32 bits ou 64 bits.

Préchargement du .NET Framework

WAS peut être configuré pour précharger une version particulière du .NET Framework. Cela peut faciliter la résolution des problèmes de conflits de version.

Jardins Web

Un jardin Web est le terme qui désigne un pool d'applications qui s'exécute avec plusieurs processus de travail. Les demandes sont distribuées entre ces instances de processus de travail à l'aide d'un mécanisme de tourniquet.

Prise en charge de WAS multi protocole

WAS n'héberge pas uniquement la pile HTTP. Il peut également héberger d'autres protocoles via son adaptateur d'écoute et son infrastructure de processus de travail. Les services WCF tirent parti de la prise en charge de WAS multiprotocole. Les protocoles WCF sont fournis avec leurs propres écouteurs (par exemple, le NET. TCP, NET. MSMQ ou NET. Écouteur PIPE). Ces écouteurs se connectent à WAS à l'aide des interfaces d'adaptateur d'écouteur WAS fournit.

Les protocoles d'application qui tirent parti de cette infrastructure peuvent héberger du code d'application personnalisé dans le même domaine d'application .NET que les applications standard ASP.NET. Ils peuvent également bénéficier des services indépendants du protocole que l'environnement d'hébergement ASP.NET fournit, par exemple la compilation à la demande, la prise en charge de la configuration, etc.