là có thể kiểm tra khi tôi tái chế hồ bơi ứng dụng lần trước, tôi muốn kiểm tra ngày khi hồ bơi ứng dụng của tôi được tái chế lần cuối, có bất cứ điều gì trong IIS tôi có thể nhận được thông tin này không.Làm thế nào để kiểm tra hồ bơi ứng dụng cuối cùng được tái chế
Trả lời
Nếu đăng nhập vào chu kỳ được bật, bạn có thể thấy điều này trong Trình xem sự kiện.
Nếu nó không bạn có thể sử dụng PerfMon quầy để xem Process-thời gian trôi qua trên W3WP.exe đại diện cho hồ bơi ứng dụng của bạn (đó sẽ là số giây kể từ khi tái chế cuối cùng)
Địa điểm trong Trình xem sự kiện? Nhật ký 'Application'? 'Nhật ký hệ thống '? Ở đâu khác? – deadlydog
Trong Nhật ký hệ thống –
Bạn có thể dễ dàng tìm thấy mới nhất thời gian tái chế bằng cách sử dụng đoạn mã PowerShell này:
(Get-Process -Id <ProcessId>).StartTime
Do đó, tìm id quá trình của ứng dụng web trong trình quản lý tác vụ.
Đầu tiên thêm các cột sau qua Tools> Chọn cột ...: chọn PID và Command Line.
Tìm kiếm bất kỳ quá trình w3wp.exe nào và tìm ứng dụng của bạn bằng cách kiểm tra dòng lệnh (tên nhóm ứng dụng là một phần của nó) và ghi lại PID của nó.
Sau đó chạy các kịch bản PowerShell để tìm ra thời gian tái chế mới nhất:
Hope this helps
này sẽ cung cấp cho bạn một danh sách tất cả các quá trình w3wp trên máy tính và thời gian bắt đầu của họ. Các ErrorAction ngăn ngừa sự commandlet từ ném một lỗi nếu không có trang web được bắt đầu và do đó không có quy trình w3wp tồn tại
ps w3wp -ErrorAction SilentlyContinue | select ProcessName, StartTime
Thử nghiệm trên Server 2012 R2 với PowerShell v4.0
Để có được tất cả các thông tin với một sử dụng lệnh Get-WmiObject thay vì nhận được quy trình.
Get-WmiObject Win32_Process -Filter "name = 'w3wp.exe'" | Select-Object Name, @{"name"="ApplicationPool";expression={(($_).CommandLine).split('"')[1] }},@{"name"="Starttime";expression={$_.ConvertToDateTime($_.CreationDate)}}
Lấy thời gian hoạt động quá trình lao động (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
Đối với nó để làm việc, hãy chắc chắn bạn có 'kịch bản quản lý IIS và các công cụ' kích hoạt.
Thứ hai, cách sử dụng bản ghi sự kiện, nếu được kích hoạt
Get-Eventlog -LogName system -Newest 1 -Source "WAS" -Message "*recycle of all worker processes in application pool '$poolName'*")
Với Get-Eventlog
bạn có thể sử dụng -After/-Before
lập luận để hạn chế hơn nữa kết quả.
Để kiểm tra xem ứng dụng hồ bơi được tái chế trong vài phút cuối cùng 'X', đoạn PowerShell sau đây có thể được sử dụng:
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
}
}
Đặt tuyên bố khai thác gỗ trong Application_Start trong Global.asax, đó là chương trình khác. Event Viewr sẽ là một nơi tuyệt vời để xem nếu bạn không có quyền truy cập vào mã. [Bài viết này] (http://blogs.msdn.com/b/johan/archive/2008/02/18/monitoring-application-pool- và-application-restart.aspx) giải thích cách thiết lập ghi lại sự kiện khởi động lại ứng dụng –
Tôi đã hỏi [câu hỏi tương tự] (http: // stackoverflow.com/questions/5443356/how-to-tell-why-an-iis-application-pool-được-tái chế) có thể hữu ích nếu bạn đang ở trong môi trường lưu trữ được chia sẻ nơi bạn không thể truy cập nhật ký sự kiện. –