在 Azure 入口網站中使用實體作業圖表 (預覽版) 進行偵錯
Azure 入口網站中的實體作業圖表可協助您以圖表或資料表格式的串流節點來覺化作業的主要計量,例如:CPU 使用率、記憶體使用率、輸入事件、分割區識別碼,以及浮水印延遲。 當您針對問題進行疑難排解時,它可協助您找出問題的原因。
本文示範如何使用實體作業圖表來分析作業的效能,並快速找出其在 Azure 入口網站中的瓶頸。
重要
這項功能目前為「預覽」狀態。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。
識別作業的平行處理原則
平行處理的作業是串流分析中的可調整案例,可提供更佳的效能。 如果作業不是平行模式,則效能很可能有某些瓶頸。 請務必識別作業是否處於平行模式。 實體作業圖表提供視覺化圖表來說明作業平行處理原則。 在實體作業圖表中,如果不同串流節點之間有資料互動,則此作業是非平行作業,需要多加注意。 例如,下列非平行作業圖表:
您可以考慮將其最佳化為平行作業 (如下列範例所示),方法是在 Visual Studio Code ASA 延伸模組或 Azure 入口網站的查詢編輯器中,使用作業圖表模擬器,重寫您的查詢或更新輸入/輸出設定。 若要深入了解,請參閱使用作業圖表模擬器將查詢最佳化 (預覽版)。
用來識別平行作業瓶頸的重要計量
串流分析作業效能主要取決於「浮水印延遲」和「待處理的輸入事件數」兩個關鍵計量。 若作業的浮水印延遲持續增加,且輸入事件有待處理,則您的作業將無法跟上輸入事件的速率,並及時產生輸出。 從計算資源的觀點來看,發生這種情況時,CPU 和記憶體資源會用於高階層級。
實體作業圖表會將圖表中的這些關鍵計量視覺化,讓您能夠了解其全貌,輕鬆找出瓶頸。
如需計量定義的詳細資訊,請參閱 Azure 串流分析節點名稱維度。
識別不平均的分散式輸入事件 (資料扭曲)
當您的作業已在平行模式中執行,但您觀察到高浮水印延遲時,請使用此方法來判斷原因。
若要找出根本原因,請在 Azure 入口網站中開啟實體作業圖表。 選取 [監視] 下的 [作業圖表 (預覽版)],並切換至 [實體圖表]。
從實體圖表中,您可以透過檢視每個節點中的浮水印延遲值,或選擇浮水印延遲熱度圖設定來排序串流節點 (建議),輕鬆所有或部分分割區是否有高浮水印延遲:
套用上述的熱度圖設定之後,您會在左上角取得具有高浮水印延遲的串流節點。 然後,您可以檢查對應的串流節點是否比其他節點有更多輸入事件。 在此範例中,streamingnode#0 和 streamingnode#1 有更多輸入事件。
您可以進一步檢查有多少分割區個別配置給串流節點,以找出更多輸入事件是由更多配置的分割區所造成,或任何具有更多輸入事件的特定分割區所造成。 在此範例中,所有串流節點都有兩個分割區。 這表示 streamingnode#0 和 streamingnode#1 具有某些特定分割區,其中包含比其他分割區更多的輸入事件。
若要找出哪些分割區具有比 streamingnode#0 和 streamingnode#1 中其他分割區更多的輸入事件,請執行下列步驟:
- 在圖表區段中選取 [新增圖表]
- 將輸入事件新增至計量,並將分割區識別碼新增至分隔器
- 選取 [套用] 以顯示輸入事件圖表
- 圖表中的刻度 streamingnode#0 和 streamingnode#1
您會看到下圖,其中包含兩個串流節點中分割區篩選的輸入事件計量。
您可以採取哪些進一步的動作?
如範例所示,分割區 (0 和 1) 具有比其他分割區更多的輸入資料。 我們稱此為資料扭曲。 正在處理具有資料扭曲分割區的串流節點,需要耗用比其他節點更多的 CPU 和記憶體資源。 這種不平衡會導致效能變慢,並增加浮水印延遲。 您可以在兩個串流節點以及實體圖表中檢查 CPU 和記憶體使用量。 若要減輕此問題,您需要更平均地重新分割輸入資料。
找出多載 CPU 或記憶體的原因
當平行作業在沒有先前提及的資料扭曲狀況下,其浮水印延遲增加,可能是因為所有串流節點上有大量資料,抑制效能所致。 您可以使用實體圖表來識別該作業是否具備此特性。
開啟實體作業圖表,移至 [監視] 下的作業 Azure 入口網站,選取 [作業圖表 (預覽版)],以切換 [實體圖表]。 您會看到載入的實體圖表,如下所示。
確認每個串流節點中的 CPU 和記憶體使用率,以查看所有串流節點的使用率是否過高。 如果所有串流節點的 CPU 和 SU 使用率很高 (超過 80%),此作業則可會在每個串流節點內處理大量資料。
在上述案例中,CPU 使用率大約是 90%,記憶體使用率已達 100%。 其顯示每個串流節點都用盡資源來處理資料。
檢查每個串流節點配置多少個分割區,以便決定是否需要更多串流節點來平衡分割區,以減少現有串流節點的負擔。
在此情況下,每個串流節點都會配置四個分割區,這對於串流節點而言,似乎太多。
您可以採取哪些進一步的動作?
請考慮減少每個串流節點的分割區計數,以減少輸入資料。 您可以藉由將串流節點計數從 8 增加到 16,讓配置給每個串流節點的 SU 增加一倍,即每個節點兩個分割區。 或者,您可以調整 SU,讓每個串流節點處理來自一個分割區的資料。
若要深入了解串流節點與串流單位之間的關聯性,請參閱了解串流單位和串流節點。
若已讓一個串流節點處理來自一個分割區的資料,但浮水印延遲仍持續增加,該怎麼辦? 將您的輸入重新分割為更多分割區,以減少每個分割區的資料量。 如需詳細資料,請參閱使用重新分割來最佳化 Azure 串流分析作業。