疑難排解批次工作執行緩慢或停滯的問題

本頁面說明如何疑難排解 Dataflow 批次工作緩慢或停滯的常見原因。

如果批次工作執行緩慢或停滯,請使用「Execution details」(執行詳細資料) 分頁標籤,進一步瞭解工作,並找出造成瓶頸的階段或 worker。

找出根本原因

  1. 檢查工作是否在啟動 worker 時發生問題。詳情請參閱「同步處理 Pod 發生錯誤」。

    如要確認工作已開始處理資料,請在 job-message 記錄檔中尋找下列記錄項目:

    All workers have finished the startup processes and began to receive work requests
    
  2. 如要比較不同工作之間的效能,請確保輸入資料量、worker 設定、自動調度資源行為和 Dataflow Shuffle 設定都相同。

  3. 檢查 job-message 記錄,確認是否有配額限制、缺貨問題或 IP 位址耗盡等問題。

  4. 「Execution details」(執行詳細資料) 分頁標煙中,比較階段進度,找出耗時較長的階段。

  5. 找出工作中的任何進度落後項目。詳情請參閱「疑難排解批次工作中進度落後項目」。

  6. 檢查處理量、CPU 和記憶體用量指標。

  7. 查看 worker 記錄中的警告和錯誤。

  8. 檢查熱鍵

  9. 如果未使用 Dataflow Shuffle,請檢查 Shuffler 記錄,瞭解 Shuffle 作業期間的警告和錯誤。如果通訊埠 12345 或 12346 顯示 RPC 逾時錯誤,表示工作可能缺少防火牆規則。請參閱「Dataflow 的防火牆規則」。

  10. 如果已啟用 Runner v2,請檢查安全防護措施記錄檔是否有錯誤。詳情請參閱「疑難排解 Runner v2 問題」。

找出進度落後項目

進度落後項目是指相較於階段中的其他工作項目,進度較慢的工作項目。如要瞭解如何找出並修正進度落後項目,請參閱疑難排解批次工作中的進度落後項目

找出緩慢或停滯的階段

如要找出緩慢或停滯的階段,請使用「Stage progress」(階段進度) 檢視畫面。長條越長,表示該階段耗時越久。使用這個檢視畫面找出管道中最慢的階段。

找出瓶頸階段後,請按照下列步驟操作:

找出延遲的 worker

如要找出特定階段中進度落後的 worker,請使用「Worker progress」(Worker 進度) 檢視畫面。這個檢視畫面會顯示所有 worker 是否都在處理工作,直到階段結束,或是單一 worker 是否卡在延遲的工作上。如果發現 worker 速度緩慢,請採取下列步驟:

偵錯工具

如果管道速度緩慢或停滯,可以使用下列工具診斷問題。

  • 如要將事件相互關聯並找出瓶頸,請使用 Cloud Monitoring for Dataflow
  • 如要監控管道效能,請使用 Cloud Profiler
  • 有些轉換比其他轉換更適合用於大量管道。記錄訊息可識別批次或串流管道中停滯的使用者轉換作業
  • 如要進一步瞭解停滯的工作,請使用 Dataflow 工作指標。下列清單列出實用指標:
    • 待處理作業位元組」指標 (backlog_bytes) 會測量各階段未處理的輸入位元組數量。使用這個指標找出沒有處理量的融合步驟。同樣地,待處理元素指標 (backlog_elements) 會測量階段中未處理的輸入元素數量。
    • 處理平行處理索引鍵」(processing_parallelism_keys) 指標會測量過去五分鐘內,管道特定階段的平行處理索引鍵數量。您可以透過下列方式使用這項指標進行調查:
      • 將問題範圍縮小至特定階段,並確認熱鍵警告,例如 A hot key ... was detected
      • 找出平行處理量不足導致的處理量瓶頸。這些瓶頸可能會導致管道緩慢或停滯。
    • 系統延遲指標 (system_lag) 和每個階段的系統延遲指標 (per_stage_system_lag) 會測量資料項目處理或等待處理的最長時間。可以運用這些指標,找出資料來源中效率不彰的階段和瓶頸。

如需 Dataflow 監控網頁介面未列出的其他指標,請參閱 Google Cloud Platform 指標中的完整 Dataflow 指標清單。