Při procházení pošty z minulého týdne jsem narazil na zajímavý dotaz (či spíše povzdech :-)) na EMWACu. “Jak mohu zjistit příčinu, která vedla k recyklaci ASP.NET procesu?”. Povedlo se mi na to přijít poměrně snadno. Vlastně ani nevím přesně jak :-). Napadlo mě podívat se do metadat IIS, zda tam nenajdu nějakou nápovědu. V IIS 6.0 jsou metadata uložena v obyčejném textovém souboru v adresáři %SYSTEMROOT%\system32\inetsrv. Otevřel jsem soubor MBSchema.xml a hledal výraz „recycle“.
A ejhle! Našel jsem jakýsi attribut LogEventOnRecycle! Mrnu do dokumentace a zdá se, že je to ono! Super, pak už stačilo pouze toto:
cscript adsutil.vbs Set w3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255
Tento příkaz aktivuje záznam do „Event Logu“ při následujících událostech:
AppPoolRecycleTime
A worker process with process id "XXXX" serving application pool "DefaultAppPool" has requested a recycle because the worker process reached its allowable processing limit
AppPoolRecycleRequests
A worker process with process id "XXXX" serving application pool "DefaultAppPool" has requested a recycle because it reached its request limit
AppPoolRecycleSchedule
A worker process with process id "XXXX" serving application pool "DefaultAppPool" has requested a recycle because it reached its scheduled recycle time
AppPoolRecycleMemory
A worker process with process id "XXXX" serving application pool "DefaultAppPool" has requested a recycle because it reached its virtual memory limit
AppPoolRecycleIsapiUnhealthy
A worker process with process id "XXXX" serving application pool "DefaultAppPool" has requested a recycle because an ISAPI it loaded reported unhealthy and requested a recycle
AppPoolRecycleOnDemand
An administrator has requested a recycle of all worker processes in application pool „DefaultAppPool“
AppPoolRecycleConfigChange
The worker processes serving application pool "DefaultAppPool" are being recycled due to 1 or more configuration changes in the application pool properties which necessitate a restart of the processes
AppPoolRecyclePrivateMemory
A worker process with process id "XXXX" serving application pool "DefaultAppPool" has requested a recycle because it reached its private bytes memory limit