

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
<a name="AuroraMySQLOOM"></a>

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 il `aurora_oom_response` parametro viene ignorato.
  + Imposta su per `OFF` controllare 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_management` `OFF`

## Azioni di risposta OOM
<a name="AuroraMySQLOOM.actions"></a>

È possibile includere le seguenti azioni`aurora_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
<a name="AuroraMySQLOOM.actions.kill_connect"></a>


| 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
<a name="AuroraMySQLOOM.defaults"></a>

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 su`OFF`, 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
<a name="AuroraMySQLOOM.serverless"></a>

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
<a name="AuroraMySQLOOM.monitoring"></a>

È possibile monitorare l'attività di prevenzione dell'OOM tramite i seguenti metodi.

### Log di errori
<a name="AuroraMySQLOOM.monitoring.errorlog"></a>

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, vedere[Registri degli errori Aurora MySQL](USER_LogAccess.MySQL.LogFileSize.md#USER_LogAccess.MySQL.Errorlog).

### CloudWatch Metriche Amazon
<a name="AuroraMySQLOOM.monitoring.cloudwatch"></a>

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](Aurora.AuroraMonitoring.Metrics.md#Aurora.AuroraMySQL.Monitoring.Metrics.instances)

### Variabili di stato globali
<a name="AuroraMySQLOOM.monitoring.statusvars"></a>

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](AuroraMySQL.Reference.GlobalStatusVars.md)

### Approfondimenti sulle prestazioni
<a name="AuroraMySQLOOM.monitoring.pi"></a>

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` e`os.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](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights_Counters.html#USER_PerfInsights_Counters.OS).

### Schema delle prestazioni
<a name="AuroraMySQLOOM.monitoring.perfschema"></a>

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](ams-workload-memory.md).