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 un'istanza DB Aurora MySQL ha una memoria estremamente bassa, il sistema operativo può interrompere il processo del database, causando un riavvio non pianificato. Per evitare 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 è scarsa. Queste azioni aiutano a prevenire l'indisponibilità del database dovuta all'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 ilaurora_oom_responseparametro viene ignorato. -
Imposta su per
OFFcontrollare manualmente le azioni di ripristino tramite.aurora_oom_response
-
-
aurora_oom_response— Un elenco di azioni di ripristino separate da virgole. Una stringa vuota disabilita tutte le azioni. Disponibile nella versione 3 di Aurora MySQL. Disponibile anche in Aurora MySQL 8.4, ma viene 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 interrogazione o connessione viene interrotta. | Disponibile nelle versioni 3 e 8.4 di Aurora MySQL. |
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 3 e 8.4 di Aurora MySQL. Solo istanze con provisioning, non supportate su Serverless v2. |
tune_buffer_pool |
Riduce il pool di buffer InnoDB per liberare memoria. La dimensione del pool di buffer viene ripristinata quando la memoria torna alla normalità. Le pagine precedentemente memorizzate nella cache che erano state rimosse 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 interrogazioni con un errore quando la memoria è insufficiente. | Disponibile nelle versioni 3 e 8.4 di Aurora MySQL. |
kill_query |
Interrompe l'esecuzione SELECT delle query, a partire dai consumatori di memoria più elevati, finché la memoria non ritorna alla normalità. DDL, altri file DML e transazioni non sono interessati. |
Disponibile nelle versioni 3 e 8.4 di Aurora MySQL. Si esclude 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 istruzioni 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 pool di buffer non si verifica 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 degli utenti per liberare memoria sufficiente per il ripristino del database dalla pressione della memoria. |
| Aurora MySQL 3.11+, Aurora MySQL 8.4 | Termina le connessioni degli utenti per liberare memoria sufficiente per il ripristino del database dalla pressione della memoria. Interrompe inoltre 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 durante 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, when is aurora_enable_memory_management (impostazione predefinita), Aurora gestisce automaticamente ON 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 per impostazione predefinita è vuoto, il che significa che non vengono intraprese azioni di ripristino a meno che non le si configuri esplicitamente. La seguente tabella dei valori predefiniti si applica solo ad Aurora MySQL versione 3.
Soglia di piccole istanze: ≤2 GiB per le versioni 3.04 e 3.05. ≤4 GiB per la versione 3.06 e successive.
Soglia di istanze 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 | disabilitato | |
| Aurora MySQL 3.06 | Small | print,tune,decline,kill_connect | print |
| Large | disabilitato | disabilitato | |
| 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 adattano dinamicamente man mano che l'istanza ridimensiona le sue ACU. La colonna Serverless v2 nella tabella dei valori predefiniti sopra riportata 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 eseguite azioni di ripristino della memoria, Aurora MySQL scrive i messaggi nel registro degli errori del database. Il prefisso del messaggio varia in base alla versione e potrebbe cambiare nelle versioni future:
Aurora MySQL versione 3: i messaggi hanno il prefisso con.
OOM crash avoidance:Aurora MySQL versione 8.4: i messaggi hanno il prefisso con.
Aurora memory management:
Questi messaggi includono:
Pressione della memoria rilevata e notifiche recuperate con memoria totale e disponibile
Dettagli delle interrogazioni o delle connessioni interrotte per il ripristino della memoria
Domande dei candidati identificate dall'azione
print
Per visualizzare il registro degli errori, vedereRegistri degli errori Aurora MySQL.
CloudWatch Metriche Amazon
Le seguenti CloudWatch metriche tengono traccia delle attività di prevenzione dell'OOM a livello di istanza.
| Metrica | Description | Disponibile da | Unità |
|---|---|---|---|
AuroraMemoryHealthState | Indica lo stato di salute della memoria. 0significa sano (nessuna pressione sulla memoria), 5 significa pressione della memoria moderata, 10 significa pressione critica della memoria. | Aurora MySQL 3.06.1+, Aurora MySQL 8.4 | Gauge |
AuroraMemoryNumDeclinedSqlTotal | Il numero incrementale di query è diminuito come parte dell'eliminazione 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 query terminate come parte dell'elusione dell'OOM. | Aurora MySQL 3.06.1+, Aurora MySQL 8.4 | Conteggio |
AuroraMillisecondsSpentInOomRecovery | Il periodo di tempo trascorso dallo stato di salute 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 lo stato di salute della memoria è stato ripristinato allo stato normale. | Aurora MySQL 3.08.0+, Aurora MySQL 8.4 | Conteggio |
AuroraNumOomRecoveryTriggered | Il numero di volte in cui lo stato di salute 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 da/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 di integrità attuale della memoria del database: integro (nessuna pressione della 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, vedere. Variabili di stato globali di Aurora MySQL
Approfondimenti sulle prestazioni
Se Performance Insights è abilitato, puoi utilizzare le metriche OS-level della 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 interrotto 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 di 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 di memoria insufficiente. Per l'elenco completo dei contatori del sistema operativo, consulta le metriche del sistema operativo Performance Insights.
Schema delle prestazioni
Se performance_schema è abilitata, è possibile utilizzare le tabelle di riepilogo della memoria per identificare quali componenti e connessioni consumano più memoria. Per ulteriori informazioni, consulta Risoluzione dei problemi di utilizzo della memoria per i database Aurora MySQL.