使用 AWS Database Migration Services (AWS DMS) 時,我收到錯誤 "Last Error Replication task out of memory.Stop Reason FATAL_ERROR Error Level FATAL (上次錯誤複寫任務記憶體不足。停止原因 FATAL_ERROR 錯誤層級 FATAL)"。
簡短描述
使用 AWS DMS 時,您收到下列錯誤:"Last Error Replication task out of memory.Stop Reason FATAL_ERROR Error Level FATAL (上次錯誤複寫任務記憶體不足。停止原因 FATAL_ERROR 錯誤層級 FATAL)"。若要找出錯誤的根本原因,請參閱 AWS DMS 任務日誌。針對上述錯誤,日誌會提供下列資訊:“Task process for 'XXXXXXX' failed because it ran out of memory (因為記憶體不足,所以 'XXXXXXX' 的任務程序失敗)”。
若要解決此錯誤,請完成下列一或多個步驟:
- 變更任務設定或記憶體相關參數。
- 針對複寫執行個體根據 Amazon CloudWatch 指標中的波動縱向擴展複寫執行個體,例如 FreeMemory 和 SwapUsage。
- 根據移轉的資料大小和任務所需的記憶體數量,將單一任務分割為多個任務。
解決方案
**注意:**您必須先停止任務,才能進行修改。完成修改之後,您必須繼續任務。如果任務在完整載入階段停止,則從頭開始重新載入執行中表格。
變更任務設定或記憶體相關參數
檢查您是否可以擴展需要更高記憶體容量的任務設定或記憶體相關參數。以下是一些最常見的任務設定和要檢查的參數:
- LOB 設定
- 驗證參數,例如 ThreadCount 和 PartitionSize
- 平行執行緒參數,例如 ParallelLoadThreads、ParallelLoadBufferSize、ParallelLoadQueuesPerThread、ParallelApplyThreads、ParallelApplyBufferSize 和 ParallelApplyQueuesPerThread。
- 批次套用餐數,例如 BatchApplyTimeoutMin、BatchApplyTimeoutMax、BatchApplyMemoryLimit 和 BatchSplitSize。
- 其他記憶體相關任務設定,例如 MinTransactionSize、MemoryLimitTotal、MemoryKeepTime 和 StatementCacheSize。
如需上述任務設定和參數的詳細資訊,請參閱 AWS DMS 如何使用記憶體進行移轉?
根據 Amazon CloudWatch 指標的波動,縱向擴展複寫執行個體類別
檢查複寫執行個體的 FreeMemory 和 SwapUsage 指標。如果 FreeMemory 減少或 SwapUsage 增加或波動,則考慮移至較大的複寫執行個體。
此外,請考慮使用記憶體最佳化執行個體。記憶體最佳化執行個體適用於記憶體密集型工作負載,例如持續移轉和高輸送量交易的複寫。如需複寫執行個體大小和類型的詳細資訊,請參閱為您的移轉選擇正確的 AWS DMS 複寫執行個體。
根據移轉的資料大小和任務所需的記憶體數量,將單一任務分割為多個任務
如果複寫執行個體具有多個任務,則您可以使用 DMS MemoryUsage 指標來觀察任務耗用的記憶體數量。若要判斷任務為何會在 CDC 階段中保存記憶體,請比較 CDCChangesMemorySource 和 CDCChangesMemoryTarget,然後針對對應的端點進行疑難排解。
在複寫執行個體上執行多個任務時,請執行下列一或多個動作:
- 減少在複寫執行個體上執行的任務數目和類型。
- 將失敗的任務移至不同的複寫執行個體,然後再試一次。
- 增加執行個體容量。
對於平行載入多個表格或移轉多個表格和結構描述的任務,請執行下列一或多個動作:
- 減少平行載入的表格數目。
- 減少要移轉的表格和結構描述總數。
- 在不同的複寫執行個體上使用不同的任務,卸載部分表格和結構描述的移轉作業。
- 增加執行個體容量。
相關資訊
目標中繼資料任務設定
變更處理調整設定
AWS Database Migration Service 指標