智慧偵測 - 效能異常

注意

您可以將 Application Insight 資源移轉至警示型智慧偵測 (預覽)。 遷移會建立不同智慧偵測模組的警示規則。 一旦建立之後,您就可以管理和設定這些規則,如同任何其他 Azure 監視器警示規則一樣。 您也可以設定這些規則的動作群組,藉此啟用在新偵測上採取動作或觸發通知的多種方法。

如需移轉程式的詳細資訊,請參閱智慧偵測警示移轉

Application Insights 會自動分析 Web 應用程式的效能,並且可以警告您有關潛在的問題。

除了為應用程式設定 Application Insights 的語言以外,此功能不需要特殊的設定。 當您的應用程式產生足夠的遙測資料,此功能即就開始運作。

何時會取得智慧偵測通知?

Application Insights 偵測到您的應用程式出現下列其中一方面的效能下降:

  • 回應時間降低 - 您的應用程式回應要求速度已開始較以往更慢。 變更可能很快速,例如因為您的最新部署中有一個迴歸。 或者可能是漸進式的,可能是記憶體流失造成的。
  • 相依性持續時間降低 - 您的應用程式會呼叫 REST API、資料庫或其他相依性。 相依性回應較以往更慢。
  • 效能變慢模式 - 您應用程式出現的效能問題只會影響部分要求。 例如,頁面在某一類型瀏覽器上的載入速度低於其他類型瀏覽器;或是某一部特定伺服器服務要求的速度較慢。 目前我們的演算法會查看頁面載入時間、要求回應時間,和相依性回應時間。

若要建立一般效能的基準,智慧偵測至少需要 8 天的足夠遙測量。 在您的應用程式運作過這段時間之後,任何嚴重的問題都會發出通知。

我的應用程式絕對有問題嗎?

否,通知並不表示您的應用程式一定有問題。 這只是您可能需要深入了解的事項的建議。

如何修正?

通知包含診斷資訊。 以下是範例:

Here is an example of Server Response Time Degradation detection

  1. 分級。 通知會顯示受影響的使用者數或作業數。 此資訊有助於指派問題的優先順序。

  2. [範圍]。 此問題會影響所有流量,還是只會影響某些頁面? 它是否限於特定的瀏覽器或位置? 此資訊可以從通知中取得。

  3. 診斷。 通常,通知中的診斷資訊會暗示問題的本質。 例如,如果要求率很高時回應時間變慢,表示您的伺服器或相依性已超載。

    否則,在 Application Insights 中開啟 [效能] 窗格。 您會在該處找到 Profiler 資料。 如果擲回例外狀況,您也可以嘗試使用快照集偵錯工具

設定電子郵件通知

智慧偵測通知依預設為啟用狀態。 通知會傳送給對 Application Insights 資源所在的訂閱具有監視讀者監視參與者權限的使用者。 若要變更預設通知,請按一下電子郵件通知中的 [設定],或開啟 Application Insights 中的 [智慧偵測] 設定。

Smart Detection Settings

  • 您可以停用預設通知,並將其取代為指定的電子郵件清單。

每個 Application Insights 資源每天僅限一封關於智慧偵測效能異常的電子郵件。 只有在當天偵測到至少一個新的問題時,才會傳送電子郵件。 您不會收到任何訊息的重複。

常見問題集

  • Microsoft 人員會看到我的資料嗎?

    • 否。 服務完全是自動的。 只有您會收到通知。 您的資料是 不公開的
  • 你們會分析 Application Insights 收集的所有資料嗎?

    • 我們目前會分析要求回應時間、相依性回應時間和頁面載入時間。 我們後續的未來展望中將有其他計量的分析。
  • 這種偵測適用於哪些類型的應用程式?

    • 會在產生適當遙測的任何應用程式中偵測到這些降低。 如果您在 Web 應用程式中安裝了 Application Insights,就會自動追蹤要求及相依性。 但在後端服務或其他應用程式中,如果您將呼叫插入 TrackRequest()TrackDependency,則智慧偵測會以相同的方式運作。
  • 我可以建立自己的異常偵測規則或自訂現有的規則嗎?

  • 執行分析的頻率為何?

    • 我們每天都會根據前一天的遙測執行分析 (UTC 時區中全天)。
  • 這可以取代計量警示嗎?

    • 否。 我們不保證能偵測到您可能認為異常的每項行為。
  • 如果我完全不回應通知,是否會收到提醒?

    • 不會,每個問題您只會收到一次訊息。 如果問題仍然存在,就會在智慧偵測摘要窗格中進行更新。
  • 我遺失了電子郵件。 在入口網站中哪裡可以找到通知?

    • 在應用程式的 Application Insights 概觀中,按一下 [智慧偵測] 磚。 您可以在這裡找到最多 90 天前的所有通知。

如何改善效能?

您可從自己的經驗得知,對網站使用者而言,回應緩慢和失敗是最大挫折之一。 因此,請務必解決問題。

分級

首先,這是否很重要? 如果頁面載入速度一向很緩慢,但您只有 1% 的網站使用者必須查看頁面,則您可能需要思考一些更重要的事情。 不過,如果只有 1% 的使用者開啟該網頁,但它每次都擲回例外狀況,這可能就是值得調查的問題。

使用影響聲明作為一般指標,例如受影響的使用者或流量百分比。 請注意,這可能不會提供完整的情況。 收集其他辨識項以進行確認。

請考慮問題的參數。 如果與地理位置有關,請設定包括該地區的 可用性測試:該地區可能有網路問題。

診斷頁面載入緩慢

問題出在哪裡? 伺服器是否回應太慢、頁面是否很長,或瀏覽器必須執行很多工作才能顯示頁面?

開啟 [瀏覽器] 計量窗格。 分段顯示的瀏覽器頁面載入時間可顯示時間的進度。

  • 如果 [傳送要求時間] 偏高,有可能是伺服器回應速度緩慢,或要求是含有大量資料的 POST 要求。 查看效能計量以調查回應時間。
  • 設定 相依性追蹤以查看速度慢是否是外部服務或您的資料庫所造成。
  • 如果 [接收回應] 是主導因素,您的頁面和其相依組件 (JavaScript、CSS、影像等,而非以非同步方式載入的資料) 會很長。 設定可用性測試,而且務必設定載入相依組件的選項。 當您取得一些結果時,請開啟結果的詳細資料並將它展開,以查看不同檔案的載入時間。
  • [用戶端處理時間] 過長表示指令碼執行速度很慢。 如果原因不明顯,請考慮加入一些時間計時程式碼並在 trackMetric 呼叫中傳送時間。

改善緩慢頁面

有一個網頁提供完整的改善伺服器回應和頁面載入時間相關建議,因此我們在此不多加贅述。 以下是您可能已知道的一些祕訣,這只是為提醒您:

  • 因大型檔案造成的載入緩慢:以非同步方式載入指令碼和其他組件。 使用指令碼統合。 將主頁面細分為個別載入其資料的 widget。 不要對長資料表傳送純舊式 HTML:使用指令碼要求 JSON 或其他壓縮格式的資料,然後就地填滿資料表。 有一些絕佳的架構可協助進行這一切。 (當然,它們也包含大型指令碼。)
  • 降低伺服器相依性:請考慮您元件的地理位置。 比方說,如果您使用 Azure,請確定 Web 伺服器和資料庫位於相同的區域中。 查詢是否擷取超過其所需的資訊量? 快取或批次是否有幫助?
  • 容量問題:查看伺服器回應時間計量和要求計數。 如果回應時間尖峰與要求計數尖峰不成比例,有可能是您的伺服器已被過度使用。

伺服器回應時間降低

回應時間拉長通知會告知您:

  • 與此作業正常回應時間相較的回應時間。
  • 受影響的使用者人數。
  • 此作業在偵測當天和七天前的平均回應時間與第 90 百分位回應時間。
  • 此作業要求在偵測當天和七天前的計數。
  • 這項作業之降低與相關相依性降低之間的相互關聯。
  • 可協助您診斷問題的連結。
    • Profiler 追蹤可協助您檢視花費作業時間的位置。 如果此作業的 Profiler 追蹤範例存在,則連結可供使用。
    • 計量瀏覽器中的效能報告,您可以在此處深入了解這項作業的時間範圍/篩選條件。
    • 搜尋此呼叫以檢視特定的呼叫屬性。
    • 報告失敗 - 如果計數 > 1,則表示此作業中的失敗可能導致效能降低。

相依性持續時間降低

新式應用程式通常會採用微服務設計方法,這在許多情況下會導致高度依賴外部服務的可靠性。 例如,如果您的應用程式依賴某些資料平台,或是 Azure AI 服務等重要服務提供者。

相依性降低通知範例︰

Here is an example of Dependency Duration Degradation detection

請注意,它會告訴您︰

  • 相較於這項作業一般回應時間的持續時間
  • 受影響的使用者人數
  • 此相依性在偵測當天和七天前的平均持續時間與第 90 百分位持續時間
  • 偵測當天和 7 天前的相依性呼叫數目
  • 連結可幫助您診斷問題
    • 計量瀏覽器中此相依性的效能報告
    • 搜尋此相依性呼叫可檢視呼叫屬性
    • 報告失敗 - 如果計數 > 1,表示偵測期間失敗的相依性呼叫可能造成持續時間降低。
    • 使用計算此相依性持續時間和計數的查詢來開啟分析

效能變慢模式的智慧偵測

Application Insights 會尋找可能只會影響某部分使用者,或只在某些情況下影響使用者的效能問題。 例如,如果頁面在特定瀏覽器類型上相較於其他瀏覽器類型載入速度較慢,或特定伺服器處理要求的速度比其他伺服器慢時。 它同時可以探索與屬性組合相關的問題,例如在某地區中使用特定作業系統的用戶端,頁面載入速度緩慢的問題。

這類異常狀況很難只藉由調查資料來偵測,但比您想像的更為常見。 通常只在您的客戶抱怨時才會浮出檯面。 但那時就太晚了:受影響的使用者已經轉而選擇您的對手!

目前,我們的演算法會查看頁面載入時間、伺服器上的要求回應時間,和相依性回應時間。

您不需要設定任何閾值或設定規則。 用機器學習服務和資料採礦演算法來偵測異常模式。

From the email alert, click the link to open the diagnostic report in Azure

  • 時間顯示偵測到問題的時間。
  • 什麼則描述偵測到的問題,以及我們發現的事件集特性,這會顯示問題行為。
  • 表格會比較效能差的事件集和所有其他事件的平均行為。

按下連結以開啟 [計量瀏覽器],依時間和屬性篩選執行緩慢的集合。

修改時間範圍和篩選器可探索遙測。

下一步

這些診斷工具可協助您檢查來自您的應用程式的遙測︰

智慧偵測是自動的。 但是,或許您會想要再設定一些警示?