分享方式:


針對適用於 .NET 的 Application Insights Profiler 進行疑難解答

本文提供疑難解答步驟和資訊,可讓您使用適用於 .NET 的 Application Insights Profiler。

您是否使用適當的 .NET Profiler 端點?

目前唯一需要修改端點的區域是 Azure Government由 21Vianet 營運的 Microsoft Azure

應用程式設定 美國政府雲端 中國雲端
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

您的應用程式是否在正確的版本上執行?

.NET Framework 支援 4.6.2 之前的 Profiler

如果 Web 應用程式是 ASP.NET Core 應用程式,則必須在最新版 ASP.NET Core 執行階段上執行。

您是否使用正確的 Azure 服務方案?

免費或共用App Service 方案目前不支援適用於 .NET 的分析工具。 升級為其中一個基本方案,讓 Profiler 開始運作。

注意

不支援 Azure Functions 使用量方案。 請參閱使用 Application Insights 來分析即時 Azure Functions 應用程式

您是否在正確的時間範圍內搜尋 .NET Profiler 數據?

如果您嘗試檢視的資料早於兩週,請試著限縮時間篩選條件,然後再試一次。 追蹤會在七天後刪除。

您知道 .NET Profiler 取樣率和額外負荷嗎?

.NET Profiler 會在已啟用 Profiler 的每個虛擬機上隨機執行兩分鐘。

注意

當 Profiler 正在主動執行並收集追蹤時,通常會將 5% 到 15% 的 CPU 和記憶體額外負荷新增至您的伺服器。

儲存 Profiler 所擷取的資料 無需額外成本。 在 15 天後即會自動刪除資料。

您可以存取閘道嗎?

檢查防火牆或 Proxy 並未封鎖您對此網頁的存取。

您是否看到逾時,或是否需要檢查 .NET Profiler 是否正在執行?

只有在分析資料可附加至 Profiler 執行期間所提出的要求時,才會上傳該資料。 .NET Profiler 會每小時收集兩分鐘的數據。 您也可以啟動分析會話來觸發 Profiler

Profiler 會將追蹤訊息和自定義事件寫入 Application Insights 資源。 您可以使用這些事件來查看 Profiler 的執行方式。

搜尋 .NET Profiler 傳送至 Application Insights 資源的追蹤訊息和自定義事件。

  1. 在 Application Insights 資源中,從頂端功能表選取 [搜尋]

    顯示從 [Application Insights] 資源選取 [搜尋] 按鈕的螢幕擷取畫面。

  2. 使用下列搜尋字串來尋找相關資料:

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    顯示來自上述搜尋字串搜尋結果的螢幕擷取畫面。

    上述搜尋結果包含兩個 AI 資源的搜尋範例:

    • 如果應用程式在 Profiler 執行時未收到要求,會有訊息說明上傳因為沒有活動而取消。

    • Profiler 已啟動,並在偵測到於 Profiler 執行期間有要求提出時傳送自訂事件。 如果顯示 ServiceProfilerSample 自訂事件,則表示已擷取設定檔,並在 [Application Insights 效能] 窗格中提供設定檔。

    如果未顯示任何記錄,表示 Profiler 未執行或回應的時間太長。 請確定您已 在 Azure 服務上啟用 Profiler

.NET Profiler 已開啟,但未擷取任何追蹤

即使已啟用分析工具,其可能不會擷取或上傳追蹤,在下列情況尤其如此:

  1. 沒有對應用程式的傳入要求:
    您可以手動叫用應用程式或建立可用性測試,或負載測試

  2. 沒有 Application Insights 認可的傳入遙測:

  3. 取樣的分析工具設定已關閉:
    如果仍然沒有可供使用的分析工具追蹤,請檢查分析工具取樣設定。

    1. 開啟 [Application Insights] > [效能] 刀鋒視窗。
    2. 按一下 [分析工具]
    3. 按一下 [觸發程序] 按鈕。
    4. 在 [觸發程序設定] 中,確定 [取樣] 切換已開啟。
  4. 仍然沒有上傳的追蹤嗎?
    建立支援要求,或請求 Azure 社群支援。 您也可以向 Azure 意見反應社群提交產品意見反應。

平行執行緒重複計算

當兩個以上的平行執行緒與要求相關聯時,堆疊檢視器中的總時間計量可能會超過要求的持續時間。 在此情況下,執行緒的總時間就會超出實際的經過時間。

例如,一個執行緒可能會等候另一個執行緒完成。 檢視器會嘗試偵測這種情況,並省略不重要的等候。 此時,它會寧可顯示過多資訊,以免省略可能具重要性的資訊。

當您在追蹤資料內看到平行執行緒時,請判斷正在等候的執行緒,以便識別要求的最忙碌路徑。 通常,快速進入等候狀態的執行緒會等候其他執行緒。 請專注在其他執行緒上,並忽略等候中執行緒的時間。

針對特定 Azure 服務上的 .NET Profiler 進行疑難解答

下列各節將逐步引導您完成在 Azure App Service 或 Azure 雲端服務上使用 Profiler 的疑難排解步驟。

Azure App Service

若要讓 .NET Profiler 正常運作,請確定:

  • 您的 Web 應用程式已啟用 Application Insights,並使用正確的設定

  • ApplicationInsightsProfiler3 WebJob 正在執行。 若要檢查 WebJob:

    1. 移至 Kudu。 在 Azure 入口網站中:

      1. 在您的 App Service 執行個體中,選取左窗格中的 [進階工具]
      2. 選取 [執行]
    2. 在頂端功能表上,選取 [工具]>[WebJob 儀表板]。 [WebJob] 窗格隨即開啟。

      如果 ApplicationInsightsProfiler3 未顯示,請重新啟動 App Service 應用程式。

      顯示 WebJobs 窗格,其中顯示名稱、狀態,以及作業上次執行階段的螢幕擷取畫面。

    3. 若要檢視 WebJob 的詳細資料 (包括記錄),請選取 [ApplicationInsightsProfiler3] 連結。 [連續 WebJob 詳細資料] 窗格隨即開啟。

      顯示連續 WebJob 詳細資料窗格的螢幕擷取畫面。

如果 .NET Profiler 仍然無法為您運作,請下載記錄檔並提交 Azure 支援 票證

檢查診斷服務網站延伸模組的狀態頁面

如果您透過 入口網站中的 [Application Insights] 窗格 啟用 .NET Profiler,則會由診斷服務網站延伸模組管理。 您可以移至 https://{site-name}.scm.azurewebsites.net/DiagnosticServices 來檢查這個延伸模組的 [狀態頁面]。

注意

狀態頁面連結的網域會根據雲端而有所不同。 此網域會與 App Service 的 Kudu 管理網站相同。

狀態頁面會顯示 .NET Profiler 和 快照調試程式 代理程式的安裝狀態。 如果發生非預期的錯誤,它會出現並顯示如何修正錯誤的步驟。

您可以使用適用於 App Service 的 Kudu 管理網站來取得此 [狀態頁面] 的基底 URL:

  1. 在 Azure 入口網站中開啟您的 App Service 應用程式。
  2. 選取 [進階工具]
  3. 選取 [執行]
  4. 在 Kudu 管理網站上:
    1. 附加 /DiagnosticServices 至URL。
    2. 選取 [輸入]。

其結尾類似 https://<kudu-url>/DiagnosticServices

狀態頁面看起來類似下列範例。

顯示 [診斷設定] 狀態頁面的螢幕擷取畫面。

注意

適用於 .NET 的 Application Insights Profiler 無程式代碼安裝遵循 .NET Core 支持原則。 如需支援執行階段的詳細資訊,請參閱 .NET Core 支援原則

手動安裝

當您設定 .NET Profiler 時,會更新 Web 應用程式的設定。 如有必要,您可以手動套用更新

太多個使用中分析工作階段

在 Azure App Service 中,一次只能 一個分析工作階段。 在 App Service 方案中執行的所有應用程式和部署位置上,都會在虛擬機器層級強制執行此限制。 此限制同樣適用於透過 診斷和解決問題、Kudu 和 Application Insights Profiler for .NET 所啟動的分析會話。

如果 .NET Profiler 嘗試在另一個已執行時啟動會話,則會在應用程式記錄檔中記錄錯誤,以及的 ApplicationInsightsProfiler3連續 WebJob 記錄檔。

您可能會在記錄中看見下列其中一個訊息:

  • Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
  • Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E

錯誤碼 0xE111005E 表示分析會話無法啟動,因為另一個會話已在執行中。

若要避免此錯誤,請將某些 Web 應用程式移至不同的 App Service 方案,或停用某些應用程式的 Profiler。 如果您使用部署位置,請務必停止任何未使用的位置。

部署錯誤:不是空目錄 'D:\home\site\wwwroot\App_Data\jobs'

如果您要將 Web 應用程式重新部署至已啟用 .NET Profiler 的 Web Apps 資源,您可能會看到下列訊息:

「不是空目錄 'D:\home\site\wwwroot\App_Data\jobs」

如果您從指令碼或從 Azure Pipelines 執行 Web Deploy,就會發生此錯誤。 解決方法是將下列部署參數新增至 Web Deploy 工作:

-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'  -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

這些參數會刪除 Application Insights Profiler 用於 .NET 的資料夾,並解除封鎖重新部署程式。 它們並不會影響目前正在執行的 Profiler 執行個體。

適用於 .NET 的 Application Insights Profiler 是否正在執行?

分析工具會在 Web 應用程式中以連續 WebJob 的形式執行。 您可以在 Azure 入口網站中開啟 Web 應用程式資源。 在 [WebJobs] 窗格中,檢查 ApplicationInsightsProfiler 的狀態。 如果它並沒有在執行,請開啟 [記錄] 以取得詳細資訊。

VM 和 Azure 雲端服務

若要查看 .NET Profiler 是否已正確設定,請 Azure 診斷:

  1. 確認所部署 Azure 診斷設定的內容是您所預期的內容。

  2. 確定 Azure 診斷在 Profiler 命令列上傳遞了正確的 iKey。

  3. 檢查 Profiler 記錄檔,以查看 .NET Profiler 是否執行,但傳回錯誤。

若要檢查用來設定 Azure 診斷的設定:

  1. 登入虛擬機器 (VM)。

  2. 開啟此位置的記錄檔。 您電腦上的外掛程式版本可能較新。

    對於 VM:

    c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    

    針對 Azure 雲端服務:

    c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    
  3. 在該檔案中,搜尋 WadCfg 字串,以找出傳至 VM 用以設定 Azure 診斷的設定。

  4. 請檢查 .NET Profiler 接收所使用的 iKey 是否正確。

  5. 檢查啟動 Profiler 的命令列。 命令列引數位於下列檔案中 (磁碟機可以是 c:d:,而且目錄可能隱藏):

    對於 VM:

    C:\ProgramData\ApplicationInsightsProfiler\config.json
    

    針對 Azure 雲端服務:

    D:\ProgramData\ApplicationInsightsProfiler\config.json
    
  6. 確定 Profiler 命令列上的 iKey 正確無誤。

  7. 透過使用在上述 config.json 檔案中找到的路徑,檢查稱為 BootstrapN.log 的 Profiler 記錄檔。 其中顯示:

    • 偵錯資訊,指出 Profiler 所使用的設定。
    • 來自 Profiler 的狀態和錯誤訊息。

    您可以在這裡找到不同項目的檔案:

    對於 VM:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    

    針對 Azure 雲端服務:

    C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    
  8. 如果您的應用程式收到要求時,.NET Profiler 正在執行,則會出現下列訊息:「從 iKey 偵測到的活動」。

  9. 在追蹤上傳期間,會顯示下列訊息:「開始上傳追蹤。」

編輯網路 Proxy 或防火牆規則

如果您的應用程式透過 Proxy 或防火牆連線到因特網,您可能需要更新規則以與 .NET Profiler 通訊。

Application Insights Profiler for .NET 所使用的 IP 會包含在 Azure 監視器服務標籤中。 如需詳細資訊,請參閱服務標籤文件

支援

如果您仍然需要協助,請在 Azure 入口網站中提交支援票證。 記得納入錯誤訊息內的相互關聯識別碼。