Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso ottimizzare l'utilizzo della memoria di AWS DMS per la migrazione?
Ho un'attività AWS Database Migration Service (AWS DMS) che utilizza più o meno memoria del previsto. Desidero ottimizzare l'utilizzo della memoria della mia istanza di replica.
Breve descrizione
Un'istanza di replica AWS DMS utilizza la memoria per eseguire il motore di replica, che esegue le istruzioni SELECT sul motore di origine durante la fase di caricamento completo. Inoltre, il motore di replica legge dal log delle transazioni del motore di origine durante la fase di acquisizione dei dati di modifica (CDC). AWS DMS esegue la migrazione di questi record verso la destinazione, dopodiché li confronta con i record corrispondenti nel database di destinazione durante il processo di convalida.
Infine, AWS DMS utilizza la memoria anche per la configurazione delle attività e per il flusso di dati dall'origine alla destinazione.
Risoluzione
Ottimizza la memoria per le attività con impostazioni LOB limitate
Quando utilizzi un'attività AWS DMS con impostazioni LOB (Large Binary Object) limitate per eseguire la migrazione dei dati, AWS DMS alloca la memoria in base al valore LobMaxSize per ogni colonna LOB. Se l'impostazione di questo valore è troppo elevata, l'attività potrebbe avere esito negativo. L'errore si verifica a causa di un errore "Out of Memory (OOM)", in base al numero di record da migrare e al valore CommitRate.
Se configuri l'attività con valori elevati, controlla le impostazioni dell'attività per accertarti che l'istanza AWS DMS disponga di memoria sufficiente.
Esempio di impostazioni delle attività JSON:
{ "TargetMetadata": { "SupportLobs": true, "FullLobMode": false, "LobChunkSize": 0, "LimitedSizeLobMode": true, "LobMaxSize": 63, "InlineLobMaxSize": 0, }
Per ulteriori informazioni, consulta Impostazione del supporto LOB per i database di origine in un'attività AWS DMS.
Ottimizza la memoria per le attività con ValidationEnabled
Se utilizzi un'attività AWS DMS con l'impostazione ValidationEnabled=true durante la migrazione, potrebbe verificarsi un utilizzo aggiuntivo della memoria. Ciò accade perché AWS DMS recupera i record ThreadCount e PartitionSize dai database di origine e di destinazione. Dopodiché AWS DMS confronta i dati corrispondenti nell'istanza di replica. Pertanto, durante la migrazione viene visualizzato un utilizzo aggiuntivo della memoria nell'istanza di replica, nel database di origine e nel database di destinazione.
Per limitare la quantità di memoria impegnata, utilizza SkipLobColumns per ignorare le colonne LOB. Puoi anche eseguire la convalida separatamente dall'attività di migrazione se utilizzi un'istanza di replica o un'attività AWS DMS distinta. A tale scopo, utilizza l'impostazione ValidationOnly:
"ValidationSettings": { "EnableValidation": true, "ThreadCount": 5, "PartitionSize": 10000, "ValidationOnly": false, "SkipLobColumns": false, },
Per ulteriori informazioni, consulta Convalida dei dati AWS DMS.
Ottimizza la memoria per le attività con thread paralleli in fase di caricamento completo e CDC
Quando utilizzi come destinazione una database non relazionale (RDBMS), ParallelLoadThreads e ParallelLoadBufferSize determinano il numero di thread e la dimensione del trasferimento dei dati verso la destinazione. ParallelApplyThreads e ParallelApplyBufferSize determinano il numero di thread e la dimensione del trasferimento dei dati durante la fase CDC. AWS DMS contiene i dati che estrai dall'origine in ParallelLoadQueuesPerThread e ParallelApplyQueuesPerThread. Quando modifichi queste impostazioni, assicurati che l'istanza e la destinazione di AWS DMS abbiano la capacità di gestire il carico di lavoro.
Impostazioni di esempio:
{ "TargetMetadata": { "ParallelLoadThreads": 0, "ParallelLoadBufferSize": 0, "ParallelLoadQueuesPerThread": 0, "ParallelApplyThreads": 0, "ParallelApplyBufferSize": 0, "ParallelApplyQueuesPerThread": 0 },
Per ulteriori informazioni su queste impostazioni, consulta Impostazioni delle attività dei metadati di destinazione.
Ottimizza la memoria per le attività con impostazioni di applicazione in batch
Quando utilizzi un'attività AWS DMS con impostazioni di applicazione in batch, la configurazione batch predefinita è in grado di gestire il normale carico di lavoro. Nel processo in batch, le impostazioni BatchApplyTimeoutMin, BatchApplyTimeoutMax e BatchApplyMemoryLimit determinano la dimensione del batch e la frequenza dell'applicazione in batch sulla destinazione. Queste impostazioni interagiscono per applicare le modifiche in batch. Se devi modificarle a causa di un carico di lavoro pesante sull'origine, assicurati che l'istanza AWS DMS abbia memoria sufficiente. In caso contrario, potrebbe verificarsi un errore OOM.
Assicurati di non impostare BatchApplyMemoryLimit su una dimensione superiore alla dimensione della memoria dell'istanza di replica, altrimenti potrebbe verificarsi un errore OOM. Nota le altre attività che vengono eseguite contemporaneamente all'attività AWS DMS che stai utilizzando per la migrazione quando imposti BatchApplyMemoryLimit.
Se imposti BatchApplyPreserveTransaction su true in più batch, AWS DMS conserva in memoria le transazioni di lunga durata. Anche questo causare errori OOM, a seconda delle impostazioni della memoria.
Per impostare il numero di modifiche da includere in ogni batch e limitare il consumo di memoria, utilizza l'impostazione BatchSplitSize.
Impostazioni di esempio:
{ "TargetMetadata": { "BatchApplyEnabled": false, }, }, "ChangeProcessingTuning": { "BatchApplyPreserveTransaction": true, "BatchApplyTimeoutMin": 1, "BatchApplyTimeoutMax": 30, "BatchApplyMemoryLimit": 500, "BatchSplitSize": 0, },
Utilizza le impostazioni delle attività relative alla memoria
Durante la fase CDC, MinTransactionSize determina quante modifiche avvengono in ogni transazione. MemoryLimitTotal controlla la dimensione delle transazioni sull'istanza di replica. Quando esegui più attività CDC che richiedono molta memoria, utilizza queste impostazioni con valori basati sul carico di lavoro transazionale di ciascuna attività.
Per limitare la memoria consumata dalle transazioni di lunga durata sull'origine, utilizza l'impostazione MemoryKeepTime. Oppure, se nell'origine sono in esecuzione grandi batch di istruzioni INSERT o UPDATE, aumenta questo valore. per mantenere le modifiche dall'elaborazione nella tabella delle modifiche nette.
Per controllare il numero di istruzioni preparate che AWS DMS archivia nell'istanza di replica, utilizza l'impostazione StatementCacheSize.
Se l'istanza di replica AWS DMS contiene un grande volume di memoria libera, regola le impostazioni in modo simile all'esempio seguente:
"ChangeProcessingTuning": { "MinTransactionSize": 1000, "CommitTimeout": 1, "MemoryLimitTotal": 1024, "MemoryKeepTime": 60, "StatementCacheSize": 50 },
Questo esempio utilizza impostazioni che consentono ad AWS DMS di gestire il carico di lavoro nella memoria. Ciò significa che AWS DMS non scarica spesso nello spazio di archiviazione.
Per ulteriori informazioni su queste impostazioni, consulta Impostazioni di ottimizzazione dell'elaborazione delle modifiche.
Monitora l'utilizzo della memoria dell'istanza di replica
Per monitorare l'utilizzo della memoria dell'istanza di replica, ordina le attività per MemoryUsage in modo da isolare la singola attività che consuma più memoria. Per scoprire perché l'attività impegna la memoria, confronta CDCChangesMemorySource e CDCChangesMemoryTarget. Quindi risolvi i problemi relativi al relativo endpoint.
L'istanza di replica utilizza una memoria minima per eseguire il motore di replica. Per verificare se possono essere eseguite attività AWS DMS aggiuntive sull'istanza di replica, consulta la metrica AvailableMemory in Amazon CloudWatch. Quindi crea una nuova attività per utilizzare la quantità di memoria disponibile (FreeMemory). Quando esegui l'attività AWS DMS, monitora FreeMemory e SwapUsage per vedere se è presente un conflitto di risorse. Per ulteriori informazioni, consulta Parametri dell'istanza di replica.
Verifica l'utilizzo della memoria
Per valutare la quantità di memoria utilizzata dall'attività AWS DMS, verifica un'istanza con la stessa configurazione in un ambiente di sviluppo o di gestione temporanea.
Esegui una migrazione del proof of concept prima di eseguire la migrazione dei dati di produzione.
Informazioni correlate
Scelta dell'istanza di replica AWS DMS giusta per la migrazione
Selezione della dimensione migliore per un'istanza di replica
- Argomenti
- Migration & Modernization
- Lingua
- Italiano
