針對 雲端服務 虛擬機上的應用程式集區當機進行疑難解答
本文討論如何在 Microsoft Azure 雲端服務 中解決虛擬機 (VM) 上的應用程式集區損毀問題。 如果應用程式集區當機,您的應用程式將會停止回應。
步驟 1:檢查處理應用程式集區的進程是否有錯誤
在 事件檢視器 中,如果您在控制台樹中選取 [Windows 記錄>系統],您可能會看到下列其中一個事件:
服務應用程式集區 『%1』 的進程與 Windows 行程啟用服務發生嚴重通訊錯誤。 進程標識碼為 『%2』。 數據欄位包含錯誤號碼。
服務應用程式集區 『%1』 的進程意外終止。 進程標識碼為 『%2』。 進程結束代碼為 『%3』。
這些事件清楚地指出應用程式集區當機。 因為應用程式內發生問題,因此必須終止應用程式集區。 應用程式集區終止之後,其對應的 w3wp.exe 進程也會終止。 系統會清除您在w3wp.exe進程內儲存的任何快取或會話型資訊。
步驟 2:檢查應用程式集區是否因為相關的進程失敗而自動停用
在理想情況下,當應用程式集區當機時,系統會自動繁衍新的 w3wp.exe 程式,以接受傳入的要求。 不過,如果應用程式集區在五分鐘內損毀超過五次,應用程式集區就會進入停止狀態。 您必須手動重新啟動應用程式集區,才能啟動並執行。 如果發生類似情況,您會在系統記錄檔底下觀察下列事件,事件檢視器:
應用程式集區 『%1』 因為處理該應用程式集區的一系列失敗而自動停用。
您可以在該應用程式集區的 [進階設定] 對話方塊的 [快速失敗保護] 區段下設定這些設定。 Enabled 屬性的預設值為 True。 如果 Enabled 屬性為 True,應用程式集區將會在特定時間內達到失敗限制之後停止。 失敗限制是由 Maximum Failures 屬性表示。 此屬性的預設值為 5。 時間範圍是由 失敗間隔 (分鐘) 屬性表示。 此屬性也預設為 5。
步驟 3:擷取w3wp.exe進程傾印檔案
在您判斷應用程式當機之後,請確切判斷它當機的原因。 您必須在終止之前擷取w3wp.exe進程的傾印檔案。 有許多方式可以擷取此檔案。 您可以設定 Windows 錯誤報告 (WER)、ProcDump 和 DebugDiag 來擷取損毀傾印檔案。 本文只討論擷取數據的DebugDiag方法。
若要下載並安裝 DebugDiag,請遵循下列步驟:
移至 [偵 錯診斷工具 v2 網站],然後選取 [ 下載]。
針對 [ 選擇您想要的下載],選取適用於計算機架構的適當Microsoft Windows Installer (MSI) 檔案版本,然後選取 [ 下一步]。
開啟下載的 檔案。 在安裝精靈中,接受預設選項,然後完成安裝應用程式。
若要設定 DebugDiag 2 集合 應用程式,請遵循下列步驟:
選取 [ 開始],輸入 DebugDiag 2集合,然後從結果清單中開啟新安裝的應用程式。
在 [ 選取規則類型 ] 對話框中,選取 [ 當機 ] 選項,然後選取 [ 下一步]。
在 [ 選取目標類型 ] 對話框中,選取 [特定 IIS Web 應用程式集區 ] 選項,然後選取 [ 下一步]。
在 [ 選取目標] 對話框中,選取正在當機的特定應用程式集區,然後選取 [ 下一步]。 如果窗口開啟,指出未安裝 網際網路資訊服務 (IIS) 管理,且不會列出應用程式集區,請選取 [確定],然後手動輸入應用程式名稱。
在 [進階組態][選擇性] 對話框中,選取 [斷點新增斷點>]。
進行下列選取以建立新的斷點,然後選取 [ 確定]。
欄位 描述 值 位移表達式 要擷取的程式 Ntdll!ZwTerminateProcess 動作類型 擷取的傾印類型 完整用戶傾印 動作限制 要擷取的傾印數目 10 在 [設定斷點] 對話框中,確認已顯示新的 [斷點表達式] 專案。 選取 [ 儲存並關閉 ] 以返回 [ 進階設定] 對話框, 然後選取 [下一步 ] 以啟動斷點。
在 [ 選取傾印位置和規則名稱(選擇性)] 對話框中,輸入 規則名稱,然後視需要,將 Userdump Location 變更為具有足夠可用磁碟空間的磁碟驅動器和目錄。 (每個傾印檔案的大小會符合記憶體中w3wp.exe進程所取用的內容。
選取 [下一步]。
若要啟用規則,請選取 [ 完成]。
現在,當機規則處於作用中狀態,而 Userdump Count 為 0。 發生問題時,傾印計數會立即增加,併產生對應的傾印檔案。
注意
應用程式集區的一般回收也可以觸發傾印檔案。 這是因為回收應用程式集區的對應 w3wp.exe 進程標識碼 (PID) 變更而發生。 這會產生傾印檔案。 此檔案為誤判。 因此,這無法協助您分析應用程式集區當機。 每當您在 userdump 計數中看到遞增時,請檢查事件記錄檔,以查看是否發生預期的當機事件。 如果事件如預期般,則擷取的傾印是正確的。
步驟 4:分析w3wp.exe進程傾印檔案
擷取傾印檔案之後,您可以開啟 [開始>偵錯][Diag 2 分析]。 此應用程式可讓您分析擷取的損毀傾印檔案。
請確定您已正確設定符號路徑。 這是兩部分的程式。 在 [ 偵錯][Diag 2 分析] 中,選取 [ 設定 ] (齒輪圖示)。 在 [要用於分析的符號搜尋路徑] 下,確認已選取 [_NT_SYMBOL_PATH和Microsoft公用符號伺服器]。
重新開啟 DebugDiag 2 集合,然後選取 [工具>選項和設定]。 然後,在 [ 選項與設定 ] 對話框中,確定 [ 偵錯符號搜尋路徑] 方塊已 設定為 srv*c:\symcache*https://msdl.microsoft.com/download/symbols。 此路徑會視需要從 Microsoft 公用符號伺服器下載符號,然後將符號儲存在 c:\symcache 目錄中。
變更或驗證符號路徑設定之後,您可以分析擷取的傾印檔案。 若要開始分析,請返回 DebugDiag 2 Analysis,然後按兩下傾印檔案的名稱。 產生報表之後,您可以在瀏覽器中開啟它,並瞭解觸發斷點表達式之線程的呼叫堆棧。 從下到上讀取呼叫堆疊,然後判斷哪個方法或元件觸發應用程式集區當機。 如果您找不到精確的例外狀況呼叫堆疊,請進一步查看相同傾印檔案分析中的 .NET 呼叫堆棧。
步驟 5:檢查w3wp.exe或WaWorkerHost.exe程式中是否有未處理的例外狀況
若要同時檢查導致w3wp.exe或WaWorkerHost.exe進程停止的任何未處理的例外狀況,請參閱未處理的例外狀況造成 ASP。以 NET 為基礎的應用程式在 .NET Framework 中意外結束。
協力廠商資訊免責聲明
本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。