2009-06-23 85 views
2

我們正在使用IIS中託管的遠程應用程序跟蹤連接泄漏,以清除在一天中的特定時間安排AppPool回收的孤立連接。 但是我沒有看到證據表明這個回收是按照計劃發生的 - 我已經更改了元數據庫屬性,因此IIS將記錄所有回收,並記錄手動回收命令。IIS應用程序池回收似乎未遵守指定的日程安排

什麼可能會阻止IIS觀察計劃?

+0

你怎麼知道應用程序池沒有被回收?進程ID是否保持不變? – Kev 2009-06-23 15:49:27

回答

4

當您執行應用程序池回收(按計劃)時,會啓動新的工作進程(w3wp.exe)。現有的工作進程保持活動狀態以處理現有請求,然後在沒有更多請求時關閉。所有新請求都發送到新的工作進程。

您可以檢查您正在回收的應用程序池是否爲新的w3wp.exe進程。您可以通過以下IIS管理腳本做到這一點:

c:>iisapp.vbs 
W3WP.exe PID: 5924 AppPoolId: MSSharePointAppPool 
W3WP.exe PID: 2840 AppPoolId: Problem Sites - ASP.NET 2.0 
W3WP.exe PID: 2576 AppPoolId: DefaultAppPool 
W3WP.exe PID: 6076 AppPoolId: ASP.NET 2.0 
W3WP.exe PID: 4916 AppPoolId: Problem Sites - ASP.NET 1.1 

記下該進程的ID之前和計劃的回收時間後,看看他們是否改變。

如果cscript不是您的默認WSH腳本宿主,則可能需要使用:cscript iisapp.vbs

當一個應用程序池回收,你也應該看到以下事件在您的系統事件日誌:

Event Type: Warning 
Event Source: W3SVC 
Event Category: None 
Event ID: 1013 
Date:  22/06/2009 
Time:  19:18:09 
User:  N/A 
Computer: UK1SRD1602 
Description: 
A process serving application pool 'ASP.NET 2.0' exceeded time limits during 
shut down. The process id was '2788'. 

此事件將在Idle timout(應用程序池屬性指定的分鐘數後出現 - >性能選項卡)加上現有工作進程完成任何掛起請求所需的時間長度,並且最後一個ASP.NET應用程序域被拆除(現有的ASP.NET會話將由舊的工作進程提供服務,直到沒有更多的時間)。