Pools d'applications IIS, processus de travail, domaines d'application

88

Quelqu'un peut-il expliquer les différences, dans IIS, entre les pools d'applications, les processus de travail et les domaines d'application? Aussi, comment travaillent-ils ensemble? J'ai lu quelques articles mais c'est encore un peu déroutant.

  1. Chaque site Web créé dans IIS devient-il une application?
  2. Chaque application est-elle associée à un processus de travail?
  3. Où les domaines d'application entrent-ils en jeu?
Ravi
la source

Réponses:

103

J'essaye de les dire avec d'autres mots.

Dans un serveur, vous pouvez avoir de nombreux sites asp.net qui fonctionnent ensemble. Chaque site est un domaine d'application .

Vous devez attribuer à chacun d'eux un pool d'applications . De nombreux domaines d'application (sites) peuvent avoir le même pool d'applications, et comme ils ont le même pool d'applications, ils s'exécutent sous les mêmes processus et sous le même compte - et ils ont les mêmes paramètres du pool. Si ce pool redémarre, tous les sites sous ces pools redémarrent.

Désormais, chaque pool peut avoir un ou plusieurs processus de travail . Chaque processus de travail est un programme différent qui exécute votre site, a ses seules variables statiques, ils différents démarrent des appels d'arrêt, etc. Les différents processus de travail ne communiquent pas ensemble, et le seul moyen d'échanger des données est à partir de fichiers communs ou d'une base de données commune. Si vous avez plusieurs processus de travail et que l'un d'entre eux effectue des calculs de longue durée, l'autre peut prendre soin de gérer les appels Internet et d'afficher le contenu.

Lorsque vous affectez plusieurs processus de travail à un seul pool, vous créez le jardin Web appelé et votre site est comme être exécuté à partir de plusieurs ordinateurs si un ordinateur est une machine de traitement.

domaines d'application, avec pools et processus

Chaque processus de travail peut avoir plusieurs threads.

Comment le processus de travail plus vous affecte:
Lorsque vous avez un processus de travail, tout est plus simple, parmi votre application, toutes les variables statiques sont les mêmes et vous utilisez lockpour les synchroniser.
Lorsque vous affectez plus d'un processus de travail, vous continuez à utiliser lockpour les variables statiques, les variables statiques ne sont pas différentes parmi les nombreuses exécutions de votre site, et si vous avez une ressource commune (par exemple la création d'une vignette sur le disque) alors vous devez synchroniser votre processus de travail avec Mutex.

Encore une note. Il semble que lorsque vous faites plus de processus de travail, vous pouvez avoir des chargements de page asynchrones plus fluides. Il y a un petit problème avec le gestionnaire de session d'asp.net qui verrouille tout le processus pour un chargement de page - c'est bon et pas bon, dépendez si vous le connaissez et le gérez - ou le changez.

Parlons donc d'un seul site avec de nombreux processus de travail. Ici, vous êtes confronté au problème avec lequel vous devez synchroniser votre changement de ressource commune Mutex. Mais les pages / gestionnaires qui utilisent la session ne sont pas asynchrones car la session les verrouille. C'est bon pour commencer car vous évitez de faire vous-même cette synchronisation de nombreux points.

Quelques questions sur ce sujet:
Application Web bloquée lors du traitement d'une autre application Web sur le partage de la même session Les
appels jQuery Ajax au service Web semblent être synchrones Le
serveur ASP.NET ne traite pas les pages de manière asynchrone
Remplacement complet de la session ASP.Net

Maintenant, ce verrouillage de session n'affecte pas différents sites.

Parmi les différents sites, le processus le plus travaillé peut aider à ne pas bloquer l'autre site avec un processus de longue durée.
De plus, parmi différents sites, le plus de pools peut également aider, car chaque pool a au moins un processus travaillé, mais souvenez-vous et voyez par vous-même à l'aide de l'explorateur de processus, chaque processus de travail prend plus de mémoire sur votre ordinateur et un gros serveur avec 16G de mémoire et un serveur SQL ne peut pas avoir trop de processus de travail différents - par exemple sur un serveur avec 100 sites partagés, vous ne pouvez pas avoir 100 pools différents.

Aristos
la source
Je suis en train de comprendre que c'est différent de la façon dont IIS 5 le gère par rapport à IIS 6 et supérieur. Ainsi, dans IIS 5, vous avez un processus de travail et plusieurs domaines d'application par rapport à IIS 6, vous avez plusieurs processus de travail (w3wp.exe) un pour chaque pool d'applications.Dans IIS 6.0, inetinfo redirige vers différents processus de travail en fonction de la demande. Suis-je juste ici? Voici ma source dotnetslackers.com/articles/iis/…
Ravi
@ user460103 Oui iis5 a un processus de travail (plusieurs domaines d'application ne peuvent avoir qu'un petit hack, mais ils ne fonctionnent pas ensemble.) Lorsque vous avez sur un site plusieurs processus de travail, alors oui iis6 peut vous rediriger vers différents processus de travail.
Aristos
L'IIS lance-t-il un nouveau processus pour chaque requête Web? Ou fait-il tourner un nouveau fil?
variable du
@variable Lancez un nouveau fil de discussion - les processus restent opérationnels tout le temps, ou ils recyclent la façon dont vous les avez configurés sur la piscine ...
Aristos
Ok s'il y a plusieurs processus, alors comment fonctionnent les sessions - je pensais que la session est par processus
variable
18
  • Un serveur IIS peut avoir plusieurs pools d'applications.
  • Une application Web se lie à un pool d'applications.
  • Un pool d'applications peut avoir plusieurs processus de travail (lorsque Web Garden est activé).
  • Un processus de travail peut avoir plusieurs domaines d'application. Un domaine d'application ne vit que dans un processus de travail.
  • Un domaine d'application peut avoir plusieurs threads. Un fil peut être partagé par différents domaines d'application à des moments différents.

La signification pour les développeurs ASP.NET: pour rendre votre site Web évolutif, n'utilisez pas de session in-proc et n'utilisez pas de verrou de variable de classe statique pour la synchronisation.

Ying
la source
7
  1. Oui, mais toutes les applications ne sont pas des sites Web. Vous pouvez avoir une application imbriquée sous un site Web.

  2. Oui, chaque application doit avoir un processus de travail (pool d'applications), bien qu'un pool d'applications puisse serveur plusieurs applications. Une seule application Web peut être distribuée (jardin Web / ferme), ce qui signifie qu'elle s'exécutera dans plusieurs processus.

  3. Chaque processus s'exécutera dans son propre domaine d'application (chaque pool d'applications est un domaine d'application distinct).


De MSDN.

Créez une application Web :

Une application est un regroupement de contenu au niveau racine d'un site Web ou un regroupement de contenu dans un dossier distinct sous le répertoire racine du site Web.

Pools d'applications :

Un pool d'applications définit un groupe d'un ou plusieurs processus de travail, configuré avec des paramètres communs qui traitent les demandes à une ou plusieurs applications affectées à ce pool d'applications. Étant donné que les pools d'applications permettent à un ensemble d'applications Web de partager un ou plusieurs processus de travail configurés de manière similaire, ils constituent un moyen pratique d'isoler un ensemble d'applications Web d'autres applications Web sur l'ordinateur serveur. Les limites de processus séparent chaque processus de travail; par conséquent, les problèmes d'application dans un pool d'applications n'affectent pas les sites Web ou les applications d'autres pools d'applications. Les pools d'applications augmentent considérablement la fiabilité et la gérabilité de votre infrastructure Web.

Oded
la source
Ainsi, le processus IIS a plusieurs domaines d'application (pools d'applications) et chaque pool d'applications peut avoir plusieurs sites Web. Alors, est-ce que plusieurs sites Web résident dans un seul domaine d'application? Et si quelque chose ne va pas sur un site Web, cela supprime-t-il tout le domaine de l'application et tous les sites Web qui y résident?
Ravi
@ user460103 Si vous plantez un pool, alors oui, tous les sites qui y sont connectés s'arrêtent - et redémarrent à nouveau.
Aristos
1
2. Non. Une application peut couvrir plusieurs processus de travail si un jardin Web est configuré.
Wiktor Zychla
@Wiktor - Je n'ai pas empêché cela. Cependant, réponse mise à jour pour clarifier.
Oded
3

Depuis le lien source: -http: //weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

Une application est un terme IIS, mais c'est celui qu'ASP.NET utilise. Essentiellement, il crée un bac à sable, ou un ensemble de limites pour séparer différents sites, ou parties de sites, des autres.

Un AppDomain est un terme .NET. (Dans IIS7, AppDomains joue un rôle plus important dans IIS, mais pour la plupart, c'est un terme ASP.NET)

Le processus de travail est utilisé pour traiter la demande de l'application Web.

Rahul Tripathi
la source