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」のタスク処理は、メモリ不足のため失敗しました)。
このエラーを解決するには、次の 1 つまたは複数のステップを実行します。
- タスクの設定またはメモリ関連のパラメータを変更する。
- FreeMemory や SwapUsage などのレプリケーションインスタンスの Amazon CloudWatch メトリクスの変動に基づいて、レプリケーションインスタンスクラスをスケールアップする。
- 移行するデータのサイズとタスクに必要なメモリ量に基づいて、1 つのタスクを複数のタスクに分割する。
解決方法
注: 変更を加える前にタスクを停止する必要があります。変更を加えたら、タスクを再開する必要があります。フルロードフェーズ中にタスクが停止すると、実行中のテーブルは最初から再ロードされます。
タスクの設定またはメモリ関連のパラメータを変更する
より多くのメモリ容量を必要とするタスクの設定またはメモリ関連のパラメータをスケールできるかどうかを確認します。確認すべき最も一般的なタスクの設定とパラメータは次のとおりです。
- 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 が増加または変動する場合は、より大きなレプリケーションインスタンスへの移行を検討してください。
また、メモリ最適化インスタンスの使用も検討してください。メモリ最適化インスタンスは、継続的な移行や高スループットトランザクションのレプリケーションなど、メモリを大量に使用するワークロードに適しています。レプリケーションインスタンスのサイズとタイプの詳細については、「Choosing the right AWS DMS replication instance for your migration」(移行に適した AWS DMS レプリケーションインスタンスの選択) を参照してください。
移行するデータのサイズとタスクに必要なメモリ量に基づいて、1 つのタスクを複数のタスクに分割する
レプリケーションインスタンスに複数のタスクがある場合は、DMS の MemoryUsage メトリクスを使用して、タスクが消費するメモリの量を観察できます。タスクが CDC フェーズでメモリを保持している理由を特定するには、CDCChangesMemorySource と CDCChangesMemoryTarget を比較し、それぞれのエンドポイントをトラブルシューティングします。
レプリケーションインスタンスで複数のタスクを実行している場合は、次のアクションを 1 つ以上実行します。
- レプリケーションインスタンスで実行されているタスクの数と種類を減らします。
- 失敗したタスクを別のレプリケーションインスタンスに移動してから再試行します。
- インスタンスキャパシティを増やします。
複数のテーブルを並行してロードしたり、多数のテーブルやスキーマを移行したりするタスクでは、次のアクションを 1 つ以上実行します。
- 並行してロードするテーブルの数を減らします。
- 移行するテーブルとスキーマの総数を減らします。
- 別のレプリケーションインスタンスで別のタスクを使用して、一部のテーブルとスキーマの移行をオフロードします。
- インスタンスキャパシティを増やします。
関連情報
Target metadata task settings (ターゲットメタデータのタスク設定)
Change processing tuning settings (変更処理のチューニング設定)
AWS Database Migration Service metrics (AWS Database Migration Service のメトリクス)