在使用 AWS Database Migration Service(AWS DMS)时,我收到错误 “Last Error Replication task out of memory.Stop Reason FATAL_ERROR Error Level FATAL”(上次错误复制任务内存不足。停止原因为 FATAL_ERROR,错误级别为致命)。
简短描述
在使用 AWS DMS 时,您收到以下错误 “Last Error Replication task out of memory.Stop Reason FATAL_ERROR Error Level FATAL”(上次错误复制任务内存不足。停止原因为 FATAL_ERROR,错误级别为致命)。要找到错误的根本原因,请查看 AWS DMS 任务日志。对于上述错误,日志提供了以下信息:“Task process for ‘XXXXXXX’ failed because it ran out of memory.(‘XXXXXX’的任务进程失败的原因是内存已耗尽。)”
要解决此错误,请执行以下一个或多个步骤:
- 更改任务设置或内存相关参数。
- 根据复制实例的 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 指标