本頁面列出 Dataproc 工作調度延遲的常見原因,並提供相關資訊,有助於避免發生這類情況。
總覽
以下是 Dataproc 工作延遲 (受到節流) 的常見原因:
- 執行中的工作過多
- 系統記憶體用量偏高
- 可用記憶體不足
- 超出頻率限制
工作延遲訊息通常以下列格式發出:
Awaiting execution [SCHEDULER_MESSAGE]"
以下各節說明特定工作延遲情況的可能原因和解決方案。
執行中的工作過多
調度器訊息:
Throttling job ### (and maybe others): Too many running jobs (current=xx max=xx)
原因:
超過依據主要執行個體 VM 記憶體計算出的並行工作數量上限 (工作驅動程式會在 Dataproc 叢集主要執行個體 VM 上執行)。根據預設,Dataproc 會為應用程式保留 3.5 GB 的記憶體,並允許每 GB 執行 1 項工作。
例如:n1-standard-4 機型有 15GB 記憶體,預留 3.5GB 作為系統資源,仍剩餘 11.5GB。向下取整後,11GB 最多可處理 11 項並行工作。
解決方法:
監控 CPU 使用率和記憶體等記錄指標,據以估算工作需求。
建立工作叢集時,請採取下列做法:
系統記憶體用量過高或可用記憶體不足
調度器訊息:
Throttling job xxx_____JOBID_____xxx (and maybe others): High system memory usage (current=xx%)
Throttling job xxx_____JOBID_____xxx (and maybe others): Not enough free memory (current=xx min=xx)
原因:
根據預設,當記憶體用量達到 90% (0.9) 時,Dataproc 代理程式會限制工作提交的流量,達到此限制後,系統將無法調度新的工作。
在叢集上調度其他工作所需的可用記憶體不足。
解決方法:
建立叢集時,請採取下列做法:
超過工作頻率限制
調度器訊息:
Throttling job xxx__JOBID___xxx (and maybe others): Rate limit
原因:
Dataproc 代理程式已達工作提交頻限制。
解決方法:
- 根據預設,Dataproc 代理程式工作提交限制為
1.0 QPS。在建立叢集時,可以使用dataproc:dataproc.scheduler.job-submission-rate叢集屬性將其設定為不同的值。
查看工作狀態
如要查看工作狀態和詳細資料,請參閱「工作監控和偵錯」。