使用計量和維度來分析串流分析的作業效能
若要了解 Azure 串流分析作業的健康情況,請務必了解如何利用作業的計量和維度。 您可以使用 Azure 入口網站、Visual Studio Code 串流分析延伸模組或 SDK 來取得您感興趣的計量和維度。
本文示範如何透過 Azure 入口網站,使用串流分析作業計量和維度來分析作業的效能。
串流分析作業效能主要取決於「浮水印延遲」和「待處理輸入事件」兩個計量。 若作業的浮水印延遲持續增加,且輸入事件有待處理,則您的作業將無法跟上輸入事件的速率,並及時產生輸出。
讓我們看看幾個範例,以浮水印延遲計量資料作為分析作業效能的起點。
特定分割區的輸入不會增加作業浮水印延遲
如果您的易於平行作業浮水印延遲穩定增加,請移至 [計量]。 然後使用下列步驟,來找出根本原因是否為缺少輸入來源的某些分割區中的資料:
檢查哪個分割區有增加浮水印延遲。 選取 [浮水印延遲] 計量,然後依 [分割區識別碼] 維度加以分割。 在下列範例中,分割區 465 有高浮水印延遲。
檢查此分割區是否有任何輸入資料遺失。 選取 [輸入事件] 計量,並篩選該特定分割識別碼。
您可以採取哪些進一步的動作?
由於沒有輸入事件流入此分割區,此分割區的浮水印延遲便會逐漸增加。 若作業的延遲傳入容錯時間為數小時,且輸入資料未流入分割區,則該分割區的浮水印延遲預期會持續增加,達該延遲傳入時間為止。
例如,若延遲傳入時間範圍為 6 小時,且輸入資料未流入輸入分割區 1,輸出分割區 1 的浮水印延遲便會增加,直到達 6 小時為止。 您可查看輸入來源是否如預期產生資料。
輸入資料扭曲導致高浮水印延遲
如上述案例所述,當您的易於平行作業有高浮水印延遲時,第一件事就是依分割區識別碼維度分割浮水印延遲計量。 然後,您可以識別是否所有分割區皆有高浮水印延遲,或只是其中一些分割區。
在下列範例中,分割區 0 和 1 的浮水印延遲 (大約 20 到 30 秒) 比其他八個分割區更高。 其他分割區的浮水印延遲一律穩定為 8 至 10 秒。
讓我們看看所有分割區的輸入資料,計量為「輸入事件」,並以「分割區識別碼」分割:
您可以採取哪些進一步的動作?
如範例中所示,分割區 (#0 和 #1) 具有高浮水印延遲,所接收的輸入資料大幅多於其他分割區。 我們稱此為資料扭曲。 正在處理具有資料扭曲分割區的串流節點,需要耗用比其他節點更多的 CPU 和記憶體資源,如下列螢幕擷取畫面所示。
處理具有較高資料扭曲分割區的串流節點,將會呈現較高的 CPU 和/或串流單位 (SU) 使用率。 此使用率會影響作業的效能,並增加浮水印延遲。 若要減輕此問題,輸入資料則須更平均重新分割。
您也可以使用實體作業圖表對此問題進行偵錯,請參閱 實體作業圖表: 識別不平均的分散式輸入事件 (資料扭曲)。
超載的 CPU 或記憶體會增加浮水印延遲
當某項易於平行作業的浮水印延遲增加,表示此狀況可能不只發生在一或數個分割區,而是所有分割區。 如何確認您的作業落在此案例中?
依分割區識別碼分割浮水印延遲計量。 例如:
以「分割區識別碼」來分割「輸入事件」計量,確認各分割區的輸入資料是否有資料扭曲。
查看 CPU 和 SU 使用率,確認所有串流節點的使用率是否過高。
若所有串流節點的 CPU 和 SU 使用率很高 (超過 80%),此作業則可會在每個串流節點內處理大量資料。
您可以藉由檢查輸入事件計量,進一步檢查配置給一個串流節點的分割區數目。 使用 [節點名稱] 維度依串流節點識別碼進行篩選,並依資料分割識別碼分割。
上述螢幕擷取畫面顯示,有四個分割區配置給一個佔用大約 90% 到 100% 串流節點資源的串流節點。 您可使用類似方法來檢查其餘的串流節點,確認這些節點是否也正在處理來自四個分割區的資料。
您可以採取哪些進一步的動作?
您可能會想要減少各串流節點的分割區數目,以便減少各串流節點的輸入資料。 若要達到此目的,您可以將 SU 數目加倍,讓每個串流節點處理來自兩個分割區的資料。 或者,您可以調整 SU,讓每個串流節點處理來自一個分割區的資料。 如需了解 SU 指派與串流節點計數間的關聯性,請參閱了解及調整串流單位。
若已讓一個串流節點處理來自一個分割區的資料,但浮水印延遲仍持續增加,該怎麼辦? 將您的輸入重新分割為更多分割區,以減少每個分割區的資料量。 如需詳細資料,請參閱使用重新分割來最佳化 Azure 串流分析作業。
您也可以使用實體作業圖表對此問題進行偵錯,請參閱 實體作業圖表: 識別多載 CPU 或記憶體的原因。