Azure App 服務 的 Web 應用程式效能、可用性及應用程式問題

注意

以下部分指引可能僅適用於 Windows 應用程式 Service 或 Linux App Service。 例如,Linux App Service 預設以 64 位元模式運行。

總結

本文回答有關 Azure App 服務 網頁應用功能效能問題的常見問題(FAQ)。

我可以在哪裡深入了解各種 App Service 方案的配額和限制?

如需配額和限制的相關信息,請參閱 App Service限制

即使所有網頁應用程式都停止,我的 App Service 方案仍顯示 CPU 或記憶體使用率

App Service 需要持續的系統程序,處理多項平台操作與功能,例如安全更新、SCM(Kudu)主控台的可用性、應用程式監控、認證及許多其他網頁應用程式功能。

系統程序在 App Service 計畫中執行,即使沒有執行網頁應用程式,或 App Service 方案中沒有包含任何網頁應用程式。

平台程序消耗的資源量(如 CPU、記憶體和磁碟空間)達到最低標準,您在 App Service 計畫的容量規劃、監控及自動擴展觸發設定時,應考慮這些資源。

我的應用程式效能很慢

多個因素可能會導致應用程式效能變慢。 如需詳細的疑難解答步驟,請參閱 針對緩慢的 Web 應用程式效能進行疑難解答。

小提示

  • 啟用 [組態>下的 [永遠開啟] 設定,以保持應用程式溫暖並避免冷啟動。 此設定有助於減少閒置後的延遲,特別是在 Basic 及更高階的方案中。
  • 設定運作狀態檢查路徑以監控應用程式運作狀態,並自動取代無回應的執行個體。 此配置有助於維持可用性與效能。 如需詳細資訊,請參閱 使用健康情況檢查監視 App Service 執行個體

我該如何排除高 CPU 消耗的問題?

在某些高 CPU 消耗情境下,你的應用程式可能真的需要更多運算資源。 在此情況下,請考慮調整為較高的服務層級,讓應用程式取得它所需的所有資源。 其他時候,高 CPU 耗用量可能是因為迴圈錯誤或程式代碼撰寫練習所造成。 了解是什麼原因導致 CPU 使用量增加,是一個分成兩個部分的過程。 首先,建立處理程序傾印,然後分析處理程序傾印。 如需詳細資訊,請參閱 針對 Web Apps 高 CPU 耗用量擷取並分析傾印檔案

我該如何排除高記憶體消耗的問題?

在某些高記憶體消耗情境下,你的應用程式可能真的需要更多運算資源。 在此情況下,請考慮調整為較高的服務層級,讓應用程式取得它所需的所有資源。 其他時候,程序代碼中的 Bug 可能會導致記憶體流失。 編碼實踐也可能增加記憶體耗用量。 了解導致記憶體高耗用的原因,是一個分成兩個部分的過程。 首先,建立處理程序傾印,然後分析處理程序傾印。 來自 Azure 網站擴充功能庫的當機診斷程式可以有效率地執行這兩個步驟。 如需詳細資訊,請參閱 針對 Web 應用程式的間歇性高記憶體使用量擷取並分析傾印檔案

如何使用 PowerShell 自動化 App Service Web 應用程式?

您可以使用 PowerShell Cmdlet 來管理及維護 App Service Web 應用程式。 請參閱「使用 PowerShell 自動化 Azure App 服務 托管的網頁應用程式」,了解如何使用 Azure Resource Manager 基礎的 PowerShell 指令小程式自動化常見任務。

注意

針對目前的自動化腳本,請使用最新的 Az.Websites 模組。 較舊 AzureRM 的模組已被取代。

我需要蒐集資訊來排除我的網頁應用程式故障

查看網頁應用程式的事件記錄

要查看網頁應用程式的事件記錄,請遵循以下步驟:

  1. 登入您的 Kudu 網站https://*yourwebsitename*.scm.azurewebsites.net)。
  2. 在功能表中,選取 偵錯主控台>CMD
  3. 選取 [LogFiles] 資料夾。
  4. 若要檢視事件記錄檔,請選取eventlog.xml的鉛筆圖示。
  5. 若要下載記錄檔,請執行 PowerShell Cmdlet Save-AzureWebSiteLog -Name webappname

擷取網頁應用程式的使用者模式記憶體傾印

要擷取網頁應用程式的使用者模式記憶體傾印,請依照以下步驟操作:

  1. 登入您的 Kudu 網站https://*yourwebsitename*.scm.azurewebsites.net)。
  2. 選取 Process Explorer 功能表。
  3. 以滑鼠右鍵按一下 w3wp.exe 程序或您的 WebJob 程序。
  4. 選取 下載記憶體傾印>完整傾印

查看網頁應用程式的流程層級資訊

您有兩個選項可用來檢視 Web 應用程式的行程層級資訊:

  • Azure 入口網站 中:

    1. 開啟 Web 應用程式的 處理程序總管
    2. 若要查看詳細數據,請選取 w3wp.exe 程式。
  • 在 Kudu 主控台中:

    1. 登入您的 Kudu 網站https://*yourwebsitename*.scm.azurewebsites.net)。
    2. 選取 Process Explorer 功能表。
    3. 針對 w3wp.exe 程序,選取 [ 屬性]。

我在使用 App Service 的本地快取功能時,找不到網頁應用程式資料夾結構中的日誌檔案

如果你使用 App Service 的本地快取功能,它會影響你 App Service 實例中 LogFiles 和 Data 資料夾的資料夾結構。 當使用本地快取時,系統會在儲存的 LogFiles 和 Data 資料夾中建立子資料夾。 子資料夾使用命名模式「unique identifier」加上時間戳記。 每個子資料夾對應一個虛擬機(VM)實例,該網頁應用程式正在執行或已執行。

要判斷你是否使用本地快取,請查看你的 App Service 應用程式設定 標籤。如果系統使用本地快取,應用程式設定 WEBSITE_LOCAL_CACHE_OPTION 會設定為 Always

啟用失敗請求追蹤

若要啟用失敗要求追蹤,請依照下列步驟操作:

  1. 在 Azure 入口網站 中,移至您的 Web 應用程式。

  2. 選取 所有設定>診斷記錄檔

  3. 對於 失敗要求追蹤,選取 開啟

  4. 選取儲存

  5. 在 [Web 應用程式] 刀鋒視窗上,選取 [ 工具]。

  6. 選取 [Visual Studio Online]。

  7. 如果設定不是 [開啟],請選取 [開啟]。

  8. 選取 Go

  9. 選取 [Web.config]。

  10. 在 system.webServer 中,新增下列組態(以擷取特定 URL):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*api*" />
    <add path="*api*">
    <traceAreas>
    <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  11. 若要針對效能緩慢的問題進行疑難解答,請新增此設定(如果擷取要求花費超過30秒):

    <system.webServer>
    <tracing> <traceFailedRequests>
    <remove path="*" />
    <add path="*">
    <traceAreas> <add provider="ASP" verbosity="Verbose" />
    <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
    <add provider="ISAPI Extension" verbosity="Verbose" />
    <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression, Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
    </traceAreas>
    <failureDefinitions timeTaken="00:00:30" statusCodes="200-999" />
    </add> </traceFailedRequests>
    </tracing>
    
  12. 若要下載失敗要求追蹤記錄,請在 Azure 入口網站中前往您的網站。

  13. 選取 Tools>Kudu>Go

  14. 在功能表中,選取 偵錯主控台>CMD

  15. 選取 LogFiles 資料夾,然後選取名稱開頭 為 W3SVC 的資料夾。

  16. 若要查看 XML 檔案,請選取鉛筆圖示。

關於效能與韌性的額外建議

  • 使用 Application Insights 和 Azure 監視器來檢視 App Service 應用程式的完整堆疊可觀察性,包括遙測、相依性追蹤和即時計量。

  • 如果你部署在支援可用區域的區域,考慮啟用區域冗餘以增強區域停電時的韌性。 如需詳細資訊,請參閱 Azure App 服務 中的可靠性。

  • App Service 會進行例行維護,以確保平臺可靠性。 若要進一步控制更新行為,尤其是在 App Service 環境 v3 中,請設定升級喜好設定。 如需詳細資訊,請參閱 Azure App 服務 的例行 (計劃) 維護