共用方式為


針對 雲端服務 虛擬機上的應用程式集區當機進行疑難解答

本文討論如何在 Microsoft Azure 雲端服務 中解決虛擬機 (VM) 上的應用程式集區損毀問題。 如果應用程式集區當機,您的應用程式將會停止回應。

步驟 1:檢查處理應用程式集區的進程是否有錯誤

在 事件檢視器 中,如果您在控制台樹中選取 [Windows 記錄>系統],您可能會看到下列其中一個事件:

服務應用程式集區 『%1』 的進程與 Windows 行程啟用服務發生嚴重通訊錯誤。 進程標識碼為 『%2』。 數據欄位包含錯誤號碼。

服務應用程式集區 『%1』 的進程意外終止。 進程標識碼為 『%2』。 進程結束代碼為 『%3』。

這些事件清楚地指出應用程式集區當機。 因為應用程式內發生問題,因此必須終止應用程式集區。 應用程式集區終止之後,其對應的 w3wp.exe 進程也會終止。 系統會清除您在w3wp.exe進程內儲存的任何快取或會話型資訊。

在理想情況下,當應用程式集區當機時,系統會自動繁衍新的 w3wp.exe 程式,以接受傳入的要求。 不過,如果應用程式集區在五分鐘內損毀超過五次,應用程式集區就會進入停止狀態。 您必須手動重新啟動應用程式集區,才能啟動並執行。 如果發生類似情況,您會在系統記錄檔底下觀察下列事件,事件檢視器:

應用程式集區 『%1』 因為處理該應用程式集區的一系列失敗而自動停用。

您可以在該應用程式集區的 [進階設定] 對話方塊的 [快速失敗保護] 區段下設定這些設定。 Enabled 屬性的預設值為 True如果 Enabled 屬性為 True,應用程式集區將會在特定時間內達到失敗限制之後停止。 失敗限制是由 Maximum Failures 屬性表示。 此屬性的預設值為 5。 時間範圍是由 失敗間隔 (分鐘) 屬性表示。 此屬性也預設為 5

[應用程式集區進階設定] 對話框的螢幕快照,[快速失敗保護] 區段。

步驟 3:擷取w3wp.exe進程傾印檔案

在您判斷應用程式當機之後,請確切判斷它當機的原因。 您必須在終止之前擷取w3wp.exe進程的傾印檔案。 有許多方式可以擷取此檔案。 您可以設定 Windows 錯誤報告 (WER)、ProcDump 和 DebugDiag 來擷取損毀傾印檔案。 本文只討論擷取數據的DebugDiag方法。

若要下載並安裝 DebugDiag,請遵循下列步驟:

  1. 移至 [偵 錯診斷工具 v2 網站],然後選取 [ 下載]。

  2. 針對 [ 選擇您想要的下載],選取適用於計算機架構的適當Microsoft Windows Installer (MSI) 檔案版本,然後選取 [ 下一步]。

  3. 開啟下載的 檔案。 在安裝精靈中,接受預設選項,然後完成安裝應用程式。

若要設定 DebugDiag 2 集合 應用程式,請遵循下列步驟:

  1. 選取 [ 開始],輸入 DebugDiag 2集合,然後從結果清單中開啟新安裝的應用程式。

  2. 在 [ 選取規則類型 ] 對話框中,選取 [ 當機 ] 選項,然後選取 [ 下一步]。

  3. 在 [ 選取目標類型 ] 對話框中,選取 [特定 IIS Web 應用程式集區 ] 選項,然後選取 [ 下一步]。

  4. 在 [ 選取目標] 對話框中,選取正在當機的特定應用程式集區,然後選取 [ 下一步]。 如果窗口開啟,指出未安裝 網際網路資訊服務 (IIS) 管理,且不會列出應用程式集區,請選取 [確定],然後手動輸入應用程式名稱。

  5. 在 [進階組態][選擇性] 對話框中,選取 [斷點新增斷點>]。

  6. 進行下列選取以建立新的斷點,然後選取 [ 確定]。

    欄位 描述
    位移表達式 要擷取的程式 Ntdll!ZwTerminateProcess
    動作類型 擷取的傾印類型 完整用戶傾印
    動作限制 要擷取的傾印數目 10
  7. 在 [設定斷點] 對話框中,確認已顯示新的 [斷點表達式] 專案。 選取 [ 儲存並關閉 ] 以返回 [ 進階設定] 對話框, 然後選取 [下一步 ] 以啟動斷點。

  8. 在 [ 選取傾印位置和規則名稱(選擇性)] 對話框中,輸入 規則名稱,然後視需要,將 Userdump Location 變更為具有足夠可用磁碟空間的磁碟驅動器和目錄。 (每個傾印檔案的大小會符合記憶體中w3wp.exe進程所取用的內容。

  9. 選取 [下一步]。

  10. 若要啟用規則,請選取 [ 完成]。

現在,當機規則處於作用中狀態,而 Userdump Count0。 發生問題時,傾印計數會立即增加,併產生對應的傾印檔案。

注意

應用程式集區的一般回收也可以觸發傾印檔案。 這是因為回收應用程式集區的對應 w3wp.exe 進程標識碼 (PID) 變更而發生。 這會產生傾印檔案。 此檔案為誤判。 因此,這無法協助您分析應用程式集區當機。 每當您在 userdump 計數中看到遞增時,請檢查事件記錄檔,以查看是否發生預期的當機事件。 如果事件如預期般,則擷取的傾印是正確的。

步驟 4:分析w3wp.exe進程傾印檔案

擷取傾印檔案之後,您可以開啟 [開始>偵錯][Diag 2 分析]。 此應用程式可讓您分析擷取的損毀傾印檔案。

請確定您已正確設定符號路徑。 這是兩部分的程式。 在 [ 偵錯][Diag 2 分析] 中,選取 [ 設定 ] (齒輪圖示)。 在 [要用於分析的符號搜尋路徑] 下,確認已選取 [_NT_SYMBOL_PATHMicrosoft公用符號伺服器]。

重新開啟 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 意見反應社群提交產品意見反應。