How to check app pool last recycled

前端 未结 6 1067
轮回少年
轮回少年 2020-12-29 01:57

is it possible to check when i recycled the app pool last time, i want to check the date when my app pool was last recycled, is there anything in IIS i can get this info.

相关标签:
6条回答
  • 2020-12-29 02:06

    You could easily find the latest recycle time by using this powershell snippet:

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

    Therefore find the process id of your web application in task manager.
    First add the following columns via Tools > Select columns... : select PID and Command Line.
    Look for any w3wp.exe process and find your application by examining the command-line (application pool name is part of it) and note down its PID.
    Then run the powershell script to find the latest recycle time:

    Hope this helps

    0 讨论(0)
  • 2020-12-29 02:08

    Get the worker process uptime(Recommended):

    $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
    

    For it to work, make sure you have 'IIS management scripts and tools' enabled.

    Second, way is using Event log, if enabled

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

    With Get-Eventlog you can use -After/-Before argument to further limit the result.

    To check if Application pool is recycled in last 'X' minutes, following powershell snippet can be used:

    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 讨论(0)
  • 2020-12-29 02:09

    If logging on recycles is turned on you can see this in the Event Viewer (System Log).

    If it's not you can use PerfMon counters to see Process-Elapsed Time on the W3WP.exe representing your application pool (which will be the number of seconds since the last recycle)

    0 讨论(0)
  • 2020-12-29 02:14

    In Powershell:

    (ps -id (Get-IISAppPool -Name <name>).WorkerProcesses.ProcessId).StartTime
    

    If the pool has been recycled, then for some reason you may need to re-import the module to get the new processId:

    $pool = Get-IISAppPool -Name <name>
    
    $pool.recycle()
    
    Import-Module -Force IISAdministration
    
    (ps -id (Get-IISAppPool -Name <name>).WorkerProcesses.ProcessId).StartTime
    
    0 讨论(0)
  • 2020-12-29 02:23

    This will give you a list of all the w3wp processes on the machine and their start times. The ErrorAction prevents the commandlet from throwing an error if no websites are started and therefore no w3wp processes exist

    ps w3wp -ErrorAction SilentlyContinue | select ProcessName, StartTime
    

    Tested on Server 2012 R2 with powershell v4.0

    0 讨论(0)
  • 2020-12-29 02:29

    To get all the information with one command use the Get-WmiObject instead of 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 讨论(0)
提交回复
热议问题