Как проверить последнюю переработку пула приложений
Можно ли проверить, когда я переработал пул приложений в последний раз, я хочу проверить дату, когда мой пул приложений был переработан в последний раз, есть ли что-нибудь в IIS, что я могу получить эту информацию.
5 ответов:
Если включен вход в recycles, вы можете увидеть это в окне просмотра событий.
Если это не так, вы можете использовать счетчики PerfMon, чтобы увидеть Время, затраченное процессом на W3WP.exe, представляющий пул приложений (который будет равен количеству секунд с момента последней переработки)
Вы можете легко найти последнее время рециркуляции с помощью этого фрагмента powershell:
(Get-Process -Id <ProcessId>).StartTime
Поэтому найдите идентификатор процесса вашего веб-приложения в диспетчере задач.
Сначала добавьте следующие столбцы с помощью Tools > Select columns...: Выберите PID и командную строку.
Посмотрите для любого процесса w3wp.exe-процесс и найдите свое приложение, изучив командную строку (имя пула приложений является ее частью) и запишите его PID.
Затем запустить скрипт PowerShell для найти последнее время рециркуляции:Надеюсь, это поможет
Чтобы получить всю информацию с помощью одной команды, используйте 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)}}
Это даст вам список всех процессов w3wp на машине и время их запуска. ErrorAction не позволяет командлету выдавать ошибку, если веб-сайты не запущены и, следовательно, не существует процессов w3wp
ps w3wp -ErrorAction SilentlyContinue | select ProcessName, StartTime
Протестировано на сервере 2012 R2 с помощью powershell v4. 0
Получить время безотказной работы рабочего процесса (рекомендуется):
$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".
Во-вторых, путь использует журнал событий, если включен
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 } }