Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Risoluzione dei problemi di memoria insufficiente per i database Aurora MySQL
Quando la memoria di un'istanza di Aurora MySQL DB è estremamente bassa, il sistema operativo può interrompere il processo del database, provocando un riavvio non pianificato. Per aiutare a prevenire questi riavvii, Aurora MySQL include funzionalità di gestione della memoria che monitorano la memoria di sistema e intraprendono azioni di ripristino automatiche quando la memoria è insufficiente. Queste azioni aiutano a prevenire l'indisponibilità del database a causa dell'esaurimento della memoria.
I seguenti parametri controllano questo comportamento:
-
aurora_enable_memory_management— Disponibile solo in Aurora MySQL 8.4.-
Quando
ON(impostazione predefinita), Aurora gestisce automaticamente le azioni di ripristino della memoria e il parametro viene ignorato.aurora_oom_response -
Impostato su per
OFFcontrollare manualmente le azioni di ripristino tramite.aurora_oom_response
-
-
aurora_oom_response— Un elenco separato da virgole di azioni di ripristino. Una stringa vuota disabilita tutte le azioni. Disponibile in Aurora MySQL versione 3. Disponibile anche in Aurora MySQL 8.4 ma considerato solo quando è impostato su.aurora_enable_memory_managementOFF
Azioni di risposta OOM
È possibile includere le seguenti azioniaurora_oom_response, elencate dalla meno aggressiva alla più aggressiva.
| Azione | Cosa fa | Note |
|---|---|---|
print |
Registra le interrogazioni e le connessioni che richiedono molta memoria nel registro degli errori. Nessuna richiesta o connessione viene interrotta. | Disponibile nelle versioni Aurora MySQL 3 e 8.4. |
tune |
Riduce le cache interne delle tabelle (,) per liberare memoria. table_open_cache table_definition_cache Le dimensioni della cache vengono ripristinate quando la memoria torna alla normalità. Le voci precedentemente memorizzate nella cache non vengono ripristinate; le nuove voci vengono aggiunte solo quando le query successive vi accedono. |
Disponibile nelle versioni Aurora MySQL 3 e 8.4. Solo istanze con provisioning, non supportate su Serverless v2. |
tune_buffer_pool |
Riduce il pool di buffer InnoDB per liberare memoria. La dimensione del buffer pool viene ripristinata quando la memoria torna alla normalità. Le pagine precedentemente rimosse dalla cache non vengono ricaricate automaticamente; le nuove pagine vengono memorizzate nella cache solo quando le query successive vi accedono. | Solo Aurora MySQL versione 3 (3.06 e successive) e Aurora MySQL 8.4. Supportato solo su istanze con provisioning con 2 vCPU. Non supportato su Serverless v2. |
decline |
Rifiuta le nuove query con un errore mentre la memoria è insufficiente. | Disponibile nelle versioni Aurora MySQL 3 e 8.4. |
kill_query |
Termina le SELECT query in esecuzione, iniziando dal consumo di memoria più elevato, fino a quando la memoria non torna alla normalità. DDL, altri DML e transazioni non sono interessati. |
Disponibile nelle versioni Aurora MySQL 3 e 8.4. Si escludono a vicenda conkill_connect: se entrambi sono impostati, si attiva solo. kill_connect |
kill_connect |
Termina le connessioni degli utenti, ripristina le transazioni attive e termina le dichiarazioni DDL. | Vedi il comportamento specifico della versione di seguito. |
Importante
È necessario associare tune_buffer_pool con kill_query o kill_connect nel valore del parametro aurora_oom_response. Senza uno di questi, il ridimensionamento del buffer pool non avviene nemmeno quando è incluso. tune_buffer_pool
comportamento specifico della versione kill_connect
| Versione Aurora MySQL | Comportamento |
|---|---|
| Aurora MySQL 3.04 — Aurora MySQL 3.10 | Termina le connessioni utente per liberare memoria sufficiente per consentire al database di recuperare dalla pressione della memoria. |
| Aurora MySQL 3.11+, Aurora MySQL 8.4 | Termina le connessioni utente per liberare memoria sufficiente per consentire al database di recuperare dalla pressione della memoria. Inoltre, interrompe qualsiasi connessione utente che tenti di allocare memoria durante la pressione della memoria. |
Su Serverless v2, Aurora risponde alla pressione della memoria scalando innanzitutto le ACU per fornire memoria aggiuntiva. Se la pressione della memoria persiste mentre è in corso il ridimensionamento, Aurora può interrompere le connessioni esistenti per recuperare la memoria. L'interruzione delle connessioni che tentano di allocare memoria si verifica solo quando l'istanza ha raggiunto il limite ACU massimo configurato e non può più scalare ulteriormente.
Valori predefiniti per versione
Aurora MySQL si configura automaticamente in aurora_oom_response base alla versione del motore, al tipo di istanza e alla memoria disponibile.
In Aurora MySQL 8.4, quando aurora_enable_memory_management è ON (impostazione predefinita), Aurora gestisce automaticamente le azioni di ripristino della memoria e il valore non viene utilizzato. aurora_oom_response Se impostato suOFF, Aurora utilizza direttamente il aurora_oom_response valore, che è vuoto per impostazione predefinita, il che significa che non vengono intraprese azioni di ripristino a meno che non le configuri esplicitamente. La seguente tabella delle impostazioni predefinite si applica solo a Aurora MySQL versione 3.
Soglia di istanza ridotta: ≤2 GiB per le versioni 3.04 e 3.05. ≤4 GiB per la versione 3.06 e successive.
Soglia di istanza ampia: >2 GiB per le versioni 3.04 e 3.05. > 4 GiB per la versione 3.06 e successive.
| Versione | Dimensioni istanza | Assegnata | Serverless v2 |
|---|---|---|---|
| Aurora MySQL 3.04 — Aurora MySQL 3.05 | Small | print,tune | print |
| Large | disabilitato | disabile | |
| Aurora MySQL 3.06 | Small | print,tune,decline,kill_connect | print |
| Large | disabilitato | disabile | |
| Aurora MySQL 3.07 | Small | print,tune,decline,kill_connect | print |
| Large | print | print | |
| Aurora MySQL 3.08 | Small | print,tune,tune_buffer_pool,decline,kill_connect | print |
| Large | print | print | |
| Aurora MySQL 3.09—Aurora MySQL 3.10 | Small | print,tune,tune_buffer_pool,decline,kill_connect | print |
| Large | print,decline,kill_connect | print,decline,kill_connect | |
| Aurora MySQL 3.11+ | Small | print,tune,tune_buffer_pool,decline,kill_connect | print,decline,kill_connect |
| Large | print,decline,kill_connect | print,decline,kill_connect |
Aurora Serverless v2
Le tune_buffer_pool azioni tune and non sono supportate su Aurora Serverless v2. Tutte le altre azioni funzionano allo stesso modo delle istanze con provisioning.
Le soglie di memoria si regolano dinamicamente man mano che l'istanza ridimensiona le proprie ACU. La colonna Serverless v2 nella tabella delle impostazioni predefinite riportata sopra mostra le impostazioni predefinite effettive per ciascuna versione.
Monitoraggio
È possibile monitorare l'attività di prevenzione dell'OOM tramite i seguenti metodi.
Log di errori
Quando vengono intraprese azioni di ripristino della memoria, Aurora MySQL scrive messaggi nel registro degli errori del database. Il prefisso del messaggio varia in base alla versione e può cambiare nelle versioni future:
Aurora MySQL versione 3: i messaggi sono preceduti da.
OOM crash avoidance:Aurora MySQL versione 8.4: i messaggi sono preceduti da.
Aurora memory management:
Questi messaggi includono:
Pressione della memoria rilevata e notifiche ripristinate con memoria totale e disponibile
Dettagli delle richieste o delle connessioni terminate per il ripristino della memoria
Domande candidate identificate dall'azione
print
Per visualizzare il registro degli errori, vedereRegistri degli errori Aurora MySQL.
CloudWatch Metriche di Amazon
Le seguenti CloudWatch metriche tracciano l'attività di prevenzione degli OOM a livello di istanza.
| Metrica | Description | Disponibile da | Unità |
|---|---|---|---|
AuroraMemoryHealthState | Indica lo stato di salute della memoria. 0significa sano (nessuna pressione della memoria), 5 significa pressione della memoria moderata, 10 significa pressione della memoria critica. | Aurora MySQL 3.06.1+, Aurora MySQL 8.4 | Gauge |
AuroraMemoryNumDeclinedSqlTotal | Il numero incrementale di domande è diminuito come parte della prevenzione dell'OOM. | Aurora MySQL 3.06.1+, Aurora MySQL 8.4 | Conteggio |
AuroraMemoryNumKillConnTotal | Il numero incrementale di connessioni chiuse per evitare l’esaurimento della memoria. | Aurora MySQL 3.06.1+, Aurora MySQL 8.4 | Conteggio |
AuroraMemoryNumKillQueryTotal | Il numero incrementale di interrogazioni terminate come parte della prevenzione di OOM. | Aurora MySQL 3.06.1+, Aurora MySQL 8.4 | Conteggio |
AuroraMillisecondsSpentInOomRecovery | L'intervallo di tempo trascorso dal momento in cui lo stato della memoria è sceso al di sotto dello stato normale. | Aurora MySQL 3.08.0+, Aurora MySQL 8.4 | Millisecondi |
AuroraNumOomRecoverySuccessful | Il numero di volte in cui l'integrità della memoria è stata ripristinata allo stato normale. | Aurora MySQL 3.08.0+, Aurora MySQL 8.4 | Conteggio |
AuroraNumOomRecoveryTriggered | Il numero di volte in cui lo stato della memoria è sceso al di sotto dello stato normale. | Aurora MySQL 3.08.0+, Aurora MySQL 8.4 | Conteggio |
Le seguenti metriche generali sono utili anche per monitorare la pressione della memoria: CloudWatch
| Metrica | Description | Unità |
|---|---|---|
FreeableMemory | La quantità di memoria disponibile. Riporta il MemAvailable valore di/proc/meminfo. | Byte |
SwapUsage | La quantità di spazio di scambio utilizzato. | Byte |
Per l'elenco completo delle metriche a livello di istanza di Aurora MySQL, consulta. Instance-level metriche per Amazon Aurora
Variabili di stato globali
Le seguenti variabili di stato forniscono informazioni sullo stato OOM. Disponibile in Aurora MySQL versione 3.06.0 e successive.
| Variabile | Description |
|---|---|
Aurora_oom_response | Le azioni di risposta OOM attualmente attive per questa istanza DB. |
aurora_oom_avoidance_recovery_state | Se il ripristino OOM è ACTIVE oINACTIVE. |
aurora_oom_status | Stato attuale della memoria del database: integro (nessuna pressione di memoria), pressione della memoria moderata o pressione critica della memoria. Disponibile solo nella versione 3. |
Per interrogare: SHOW GLOBAL STATUS LIKE 'aurora_oom%';
Per l'elenco completo delle variabili di stato globali di Aurora MySQL, consulta. Variabili di stato globali di Aurora MySQL
Approfondimenti sulle prestazioni
Se Performance Insights è abilitato, puoi utilizzare le metriche di OS-level memoria per monitorare la pressione della memoria e rilevare gli eventi OOM. Le seguenti metriche sono disponibili sotto i contatori os.memory eos.swap:
| Metrica | Description |
|---|---|
os.memory.outOfMemoryKillCount | Il numero di uccisioni OOM nell'ultimo intervallo di raccolta. Un valore diverso da zero indica che il sistema operativo ha terminato un processo a causa dell'esaurimento della memoria, che in genere comporta il riavvio del database. |
os.memory.total | La quantità totale di memoria, in kilobyte. |
os.memory.free | La quantità di memoria non assegnata, in kilobyte. |
os.memory.active | La quantità di memoria assegnata, in kilobyte. |
os.memory.cached | La quantità di memoria utilizzata per la memorizzazione nella cache del file system I/O, in kilobyte. |
os.memory.dirty | La quantità di pagine di memoria modificate ma non ancora scritte nella memoria, in kilobyte. |
os.memory.inactive | La quantità di pagine di memoria utilizzate meno frequentemente, in kilobyte. |
os.memory.db.residentSetSize | La quantità di memoria utilizzata dal processo del database (esclusa la memoria condivisa), in byte. |
os.memory.db.cache | La quantità di memoria utilizzata per la cache delle pagine dal processo di database, in byte. |
os.memory.db.swap | La quantità di memoria di swap utilizzata dal processo di database, in byte. |
os.swap.in | La quantità di memoria scambiata dal disco, in kilobyte. |
os.swap.out | La quantità di memoria trasferita su disco, in kilobyte. |
È possibile monitorare os.memory.outOfMemoryKillCount per rilevare quando il sistema operativo ha interrotto il processo del database a causa dell'esaurimento della memoria. Per l'elenco completo dei contatori del sistema operativo, vedere Contatori del sistema operativo.
Schema delle prestazioni
Se performance_schema è abilitata, è possibile utilizzare le tabelle di riepilogo della memoria per identificare i componenti e le connessioni che consumano più memoria. Per ulteriori informazioni, consulta Risoluzione dei problemi di utilizzo della memoria per i database Aurora MySQL.