排查 AWS DMS 错误“Last Error Replication task out of memory.Stop Reason FATAL_ERROR Error Level FATAL”(上次错误复制任务内存不足。停止原因为 FATAL_ERROR,错误级别为致命)

1 分钟阅读
0

在使用 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 指标(如 FreeMemorySwapUsage)的波动,扩展复制实例类别。
  • 根据迁移的数据大小和任务所需的内存量,将单个任务拆分成多个任务。

解决方法

**注意:**必须先停止任务,然后才能进行修改。修改完成后,必须继续执行任务。如果任务在完全加载阶段停止,则会从头开始重新加载正在传输的表。

更改任务设置或内存相关参数

检查是否可以扩展需要更高内存容量的任务设置或内存相关参数。以下是一些最常用的任务设置和需要检查的参数:

  • LOB 设置
  • 验证参数,例如 ThreadCountPartitionSize
  • 并行线程参数,例如 ParallelLoadThreadsParallelLoadBufferSizeParallelLoadQueuesPerThreadParallelApplyThreadsParallelApplyBufferSizeParallelApplyQueuesPerThread
  • 批量应用参数,例如 BatchApplyTimeoutMinBatchApplyTimeoutMaxBatchApplyMemoryLimitBatchSplitSize
  • 其他与内存相关的任务设置,例如 MinTransactionSizeMemoryLimitTotalMemoryKeepTimeStatementCacheSize

有关上述任务设置和参数的更多详细信息,请参阅 AWS DMS 如何使用迁移内存?

根据 Amazon CloudWatch 指标的波动扩展复制实例类别

检查复制实例的 FreeMemorySwapUsage 指标。如果 FreeMemory 减少或者 SwapUsage 增加或波动,则考虑移至更大的复制实例。

另外,可考虑使用内存优化型实例。内存优化型实例适用于内存密集型工作负载,例如高吞吐量事务的持续迁移和复制。有关复制实例大小和类型的更多信息,请参阅为迁移选择合适的 AWS DMS 复制实例

根据迁移的数据大小和任务所需的内存量,将单个任务拆分成多个任务

如果复制实例有多个任务,则可以使用 DMS MemoryUsage 指标来观察该任务消耗的内存量。要确定任务在 CDC 阶段占用内存的原因,请比较 CDCChangesMemorySourceCDCChangesMemoryTarget,然后对相应的端点进行问题排查。

在复制实例上运行多个任务时,执行以下一项或多项操作:

  • 减少在复制实例上运行的任务数量和类型。
  • 将失败的任务移到其他复制实例,然后重试。
  • 增加实例容量。

对于并行加载多个表或迁移多个表和架构的任务,请执行以下一项或多项操作:

  • 减少并行加载的表的数量。
  • 减少正在迁移的表和架构的数量。
  • 在不同的复制实例上使用不同的任务,以减轻迁移某些表和架构的负担。
  • 增加实例容量。

相关信息

目标元数据任务设置

更改处理优化设置

AWS Database Migration Service 指标

AWS 官方
AWS 官方已更新 1 年前