IIS: Application pool recycling vs IIS Reset

Om het verschil tussen IIS Reset en Application pool recycling uit te leggen, eerst even een stukje uitlog over hoe IIS werkt.

IIS kent drie hoofdcomponenten:


1. Http.sys
Dit is een kernelcomponent wat betekent dat het geen onderdeel is van de user mode processen, zoals de W3WP.Exe. Een kernelcomponent gebruikt nooit virtueel geheugen van user processen. Het is geisoleerd en gescheiden. Http.sys heeft drie belangrijke rollen:
  1. (client) connection management;
  2. Routing requests van browsers. Dit houdt in dat http.sys er voor zorgt dat de requests bij de juiste application pool queue terecht komen.
  3. Beheren van de response cache.
2. Worker processen
Worker processen zijn de application pools en elke application pool en voor elke application pool wordt een instantie van W3WP.exe opgestart.

Een application pool handelt alle content af zoals html bestanden, afbeeldingen, scripts, css bestanden, maar ook dynamische content zoals ASP.NET applicaties. Om deze reden is de status van het W3WP process erg belangrijk voor de performance en stabiliteit van web applicaties of web sites.

3. IIS admin services

IIS Admin is verantwoordelijk voor het beheren van de metabase. In IIS 6 de metabase is een xml-bestand en kan bekeken en bewerkt worden in een text editor. De IIS Admin service maakt de metabase beschikbaar voor applicaties die daarvan afhankelijk zijn, inclusief IIS Core componenten.

Hoe IISReset werkt
Als het commando IISReset wordt uitgevoerd, dan is het belangrijk om te weten dat het commando niet de worker processen sluit: het commando wacht totdat het process klaar is met het uitvoeren van zijn request. Het commando stuurt wel een boodschap naar http.sys dat het geen nieuwe requests meer moet aannemen. Nieuwe requests worden nu door http.sys tegengehouden en als alle application pools klaar zijn met het uitvoeren van hun laatste request, dan worden zij afgesloten en weer opnieuw opgestart. Afhankelijk van de duur van de requests kan er dus een flinke downtime ontstaan.

Recycle een application pool
Als het commando wordt gegeven dat een application pool zich moet recyclen, dan wordt er meteen een nieuwe W3WP.exe opgestart voor deze application pool. De 'oude' W3WP.exe blijft wel bestaan en wordt afgesloten op het moment dat deze zijn request heeft afgehandeld. Http.sys routeert dus nieuwe requests naar de vers opgestarte W3WP.exe en niet meer naar de oude. Op deze manier gaan er dus geen requests verloren en is er geen downtime.

Bron: 
- https://fullsocrates.wordpress.com/2012/07/25/iisreset-vs-recycling-application-pools/
- http://blogs.iis.net/ma_khan/where-is-the-iis-admin-service-in-iis-7

Reacties

Populaire posts van deze blog

[SQL Server] varchar vs nvarchar

MS Sql 70-461: Chapter 5

[C#] Class serialiseren en deserialiseren