est-il possible de vérifier quand j'ai recyclé le pool d'applications la dernière fois, je souhaite vérifier la date à laquelle mon pool d'applications a été recyclé, y a-t-il quelque chose dans IIS où je peux obtenir ces informations?.
Si la connexion sur recycles est activée, vous pouvez le voir dans l'observateur d'événements (journal système).
Si ce n'est pas le cas, vous pouvez utiliser des compteurs PerfMon pour voir le temps écoulé processus sur le fichier W3WP.exe représentant votre pool d'applications (qui correspond au nombre de secondes écoulées depuis le dernier recyclage)
Vous pouvez facilement trouver l'heure de recyclage la plus récente en utilisant cet extrait de PowerShell:
(Get-Process -Id <ProcessId>).StartTime
Par conséquent, recherchez l'ID de processus de votre application Web dans le gestionnaire de tâches.
Ajoutez d'abord les colonnes suivantes via Outils> Sélectionner les colonnes ... : sélectionnezPIDet Ligne de commande .
Recherchez tout processus w3wp.exe et recherchez votre application en examinant la ligne de commande (le nom du pool d'applications en fait partie) et notez son PID.
Ensuite, exécutez le script powershell pour rechercher la dernière heure de recyclage:
J'espère que cela t'aides
Pour obtenir toutes les informations avec une seule commande, utilisez Get-WmiObject au lieu de get-process.
Get-WmiObject Win32_Process -Filter "name = 'w3wp.exe'" | Select-Object Name, @{"name"="ApplicationPool";expression={(($_).CommandLine).split('"')[1] }},@{"name"="Starttime";expression={$_.ConvertToDateTime($_.CreationDate)}}
Cela vous donnera une liste de tous les processus w3wp sur la machine et leurs heures de démarrage. ErrorAction empêche le commandlet de générer une erreur si aucun site Web n'est démarré et qu'il n'existe donc aucun processus w3wp
ps w3wp -ErrorAction SilentlyContinue | select ProcessName, StartTime
Testé sur Server 2012 R2 avec Powershell v4.0
À Powershell:
(ps -id (Get-IISAppPool -Name <name>).WorkerProcesses.ProcessId).StartTime
Si le pool a été recyclé, vous devrez peut-être réimporter le module pour obtenir le nouveau ID de processus:
$pool = Get-IISAppPool -Name <name>
$pool.recycle()
Import-Module -Force IISAdministration
(ps -id (Get-IISAppPool -Name <name>).WorkerProcesses.ProcessId).StartTime
Obtenez la disponibilité du processus de travail (recommandé):
$poolName = <your pool name goes here eg. DefaultPool>
$poolProcess =(gwmi -NS 'root\WebAdministration' -class 'WorkerProcess' | select AppPoolName,ProcessId | Where-Object { $_.AppPoolName -eq $poolName } )
$lastStartTime=(Get-Process -Id $poolProcess.ProcessId).StartTime
write-output $lastStartTime
Pour que cela fonctionne, assurez-vous que les 'scripts et outils de gestion IIS' sont activés.
Deuxièmement, moyen utilise le journal des événements, si activé
Get-Eventlog -LogName system -Newest 1 -Source "WAS" -Message "*recycle of all worker processes in application pool '$poolName'*")
Avec Get-Eventlog
, vous pouvez utiliser l'argument -After/-Before
pour limiter davantage le résultat.
Pour vérifier si le pool d'applications est recyclé au cours des 'X' dernières minutes, vous pouvez utiliser le fragment de code powershell suivant:
function isRecycledInLastNMinutes($appPoolName, $lminutes){
$beforeDate = Get-Date -format 'u'
$afterDate = $beforeDate.addMinutes(-$lminutes)
$result = (Get-Eventlog -LogName system -Newest 1 -Source "WAS" -After $afterDate -Before $beforeDate -Message "*recycle of all worker processes in application pool '$appPoolName'*")
if( $result.length -eq 1){
return $true
}else{
retrun $false
}
}