本頁面列出 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% 時,Dataproc 代理程式會限制工作提交作業 (0.9)
)。達到這項限制後,系統就無法排定新工作。
叢集上排定其他工作所需的可用記憶體量不足。
解決方法:
建立叢集時:
超過工作頻率限制
排程器訊息:
Throttling job xxx__JOBID___xxx (and maybe others): Rate limit
原因:
Dataproc 代理程式已達工作提交速率上限。
解決方法:
- 根據預設,Dataproc 代理程式工作提交作業的限制為
1.0 QPS
。您可以在使用dataproc:dataproc.scheduler.job-submission-rate
叢集屬性建立叢集時,將此值設為其他值。
查看工作狀態
如要查看工作狀態和詳細資料,請參閱「工作監控和偵錯」。