Как проверить пул приложений, последний раз переработанный - PullRequest
33 голосов
/ 15 декабря 2011

можно ли проверить, когда я в последний раз перерабатывал пул приложений, я хочу проверить дату последней перезапуска моего пула приложений, есть ли в IIS что-нибудь, что я могу получить эту информацию.

Ответы [ 6 ]

49 голосов
/ 29 ноября 2012

Вы можете легко найти последнее время перезарядки, используя этот фрагмент PowerShell:

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

Поэтому найдите идентификатор процесса вашего веб-приложения в диспетчере задач.
Сначала добавьте следующие столбцы с помощью Инструменты> Выбрать столбцы ... : выберите PID и Командная строка .
Найдите любой процесс w3wp.exe и найдите свое приложение, изучив командную строку (имя пула приложений является его частью) и запишите его PID.
Затем запустите сценарий powershell, чтобы узнать время последней перезагрузки:

Надеюсь, это поможет

21 голосов
/ 15 июня 2012

Если включен повторный вход в систему, вы можете увидеть это в окне просмотра событий (системный журнал).

Если это не так, вы можете использовать счетчики PerfMon, чтобы увидеть истекшее время процесса на W3WP.exe, представляющем вашпул приложений (количество секунд с момента последней перезагрузки)

9 голосов
/ 27 октября 2017

Чтобы получить всю информацию одной командой, используйте get-WmiObject вместо get-process.

Get-WmiObject Win32_Process -Filter "name = 'w3wp.exe'" | Select-Object Name, @{"name"="ApplicationPool";expression={(($_).CommandLine).split('"')[1] }},@{"name"="Starttime";expression={$_.ConvertToDateTime($_.CreationDate)}}
2 голосов
/ 18 октября 2017

Это даст вам список всех процессов w3wp на машине и время их запуска. ErrorAction предотвращает появление в командной строке ошибки, если веб-сайты не запущены и, следовательно, не существует процессов w3wp

ps w3wp -ErrorAction SilentlyContinue | select ProcessName, StartTime

Протестировано на Server 2012 R2 с powershell v4.0

1 голос
/ 18 октября 2018

В Powershell:

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

Если пул был переработан, то по какой-то причине вам может потребоваться повторно импортировать модуль, чтобы получить новый идентификатор процесса:

$pool = Get-IISAppPool -Name <name>

$pool.recycle()

Import-Module -Force IISAdministration

(ps -id (Get-IISAppPool -Name <name>).WorkerProcesses.ProcessId).StartTime
0 голосов
/ 22 ноября 2017

Получить время безотказной работы рабочего процесса (рекомендуется):

$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

Чтобы это работало, убедитесь, что у вас включены «Сценарии и инструменты управления IIS».

enter image description here

Во-вторых, используется журнал событий, если он включен

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

С Get-Eventlog вы можете использовать аргумент -After/-Before для дальнейшего ограничения результата.

Чтобы проверить, был ли пул приложений переработан за последние 'X' минут, можно использовать следующий фрагмент powershell:

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...