web-dev-qa-db-fra.com

Comment vérifier le dernier pool d'applications recyclé

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?.

33
Abbas

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)

21
Stephen S.

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

49

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)}}
6
John Kopparhed

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

1
leemicw

À 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
0
mvanle

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.

 enter image description here

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
    }
}
0
sahilsk