2011-12-14 7 views
28

È possibile controllare quando ho riciclato il pool di app l'ultima volta, voglio controllare la data in cui il mio pool di app è stato riciclato l'ultima volta, c'è qualcosa in IIS posso ottenere queste informazioni.Come controllare il pool di app riciclato l'ultima volta

+0

Put dichiarazione di registrazione in Application Start in Global.asax, che è programmaticamente. Event Viewr sarà un bel posto da cercare se non hai accesso al codice. [Questo articolo] (http://blogs.msdn.com/b/johan/archive/2008/02/18/monitoring-application-pool- e-application-restarts.aspx) spiega come impostare la registrazione degli eventi di riavvio dell'applicazione –

+1

Ho chiesto una [domanda simile] (http: // StackOverflow.it/questions/5443356/how-to-tell-why-an-iis-application-pool-is-recycled) che può essere utile se ci si trova in un ambiente di hosting condiviso in cui non è possibile accedere al registro eventi. –

risposta

17

Se l'accesso ai ricicli è attivato, è possibile visualizzarlo nel Visualizzatore eventi.

Se è non è possibile utilizzare PerfMon contatori per vedere Processo-tempo trascorso sul W3WP.exe che rappresenta il pool di applicazioni (che sarà il numero di secondi dall'ultima riciclo)

+2

Dove nel Visualizzatore eventi? I log di 'Applicazione'? Log 'Sistema'? Altrove? – deadlydog

+0

Nei registri di sistema –

34

Si potrebbe facilmente trovare le ultime ricicla il tempo utilizzando questo frammento di PowerShell:

(Get-Process -Id <ProcessId>).StartTime 

Quindi trovare l'id di processo della propria applicazione Web nel task manager.
Prima aggiungere le seguenti colonne tramite Strumenti> Seleziona colonne ...: selezionare PID e la linea di comando .
Cerca qualsiasi processo w3wp.exe e trova l'applicazione esaminando la riga di comando (il nome del pool di applicazioni è parte di esso) e annota il suo PID.
quindi eseguire lo script PowerShell per trovare le ultime tempo di riciclo:

Spero che questo aiuti

+0

Un'alternativa alla ricerca dell'ID di processo sta utilizzando lo snap-in IIS e dicendo: dir IIS: \ AppPools \ _APPNAME_ \ WorkerProcesses. – nmunson

+2

Non dimenticare di eseguire Powershell come amministratore – shadi

+6

Come un unico elemento: 'ps w3wp | selezionare ProcessName, StartTime' su PS v4. –

0

Questo vi darà un elenco di tutti i processi w3wp sulla macchina e dei loro orari di inizio. L'ErrorAction impedisce al commandlet dal gettare un errore se non vengono avviati i siti web e quindi nessun processo w3wp esistono

ps w3wp -ErrorAction SilentlyContinue | select ProcessName, StartTime 

Testato su Server 2012 R2 con PowerShell v4.0

1

per ottenere tutte le informazioni con un solo utilizzo dei comandi Get-WmiObject anziché get-process.

Get-WmiObject Win32_Process -Filter "name = 'w3wp.exe'" | Select-Object Name, @{"name"="ApplicationPool";expression={(($_).CommandLine).split('"')[1] }},@{"name"="Starttime";expression={$_.ConvertToDateTime($_.CreationDate)}} 
0

Prendi l'uptime processo di lavoro (scelta consigliata):

$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 

Per farlo funzionare, assicurarsi di avere 'script di gestione IIS e strumenti' abilitato.

enter image description here

In secondo luogo, modo è usare Log eventi, se abilitato

Get-Eventlog -LogName system -Newest 1 -Source "WAS" -Message "*recycle of all worker processes in application pool '$poolName'*") 

Con Get-Eventlog è possibile utilizzare -After/-Before argomento per limitare ulteriormente il risultato.

Per verificare se pool di applicazioni viene riciclato in minuti dell'ultimo 'X', seguente frammento di PowerShell può essere utilizzato:

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 
    } 
} 
Problemi correlati