Come faccio a risolvere i problemi di un'istanza EC2 Linux che non supera il controllo dello stato a causa dell'eccessivo utilizzo delle risorse?
La mia istanza Linux di Amazon Elastic Compute Cloud (Amazon EC2) non è riuscita a verificare lo stato dell'istanza a causa dell'eccessivo utilizzo delle sue risorse.
Breve descrizione
Di seguito sono riportati tre dei motivi più comuni per cui il controllo dell'integrità potrebbe fallire a causa dell'eccessivo utilizzo delle risorse:
- L'utilizzo della CPU dell'istanza ha raggiunto quasi il 100% e l'istanza non aveva più una capacità di elaborazione sufficiente per l'esecuzione del kernel.
- Il dispositivo root è pieno al 100% e impedisce il completamento o l'avvio di altri processi.
- I processi in esecuzione sull'istanza ne hanno utilizzato tutta la memoria, impedendo l'esecuzione del kernel.
Risoluzione
Arresta e avvia l'istanza
Avvertenza:
- i dati archiviati nei volumi di archiviazione delle istanze vengono persi quando l'istanza viene fermata. Assicurati di salvare un backup dei dati prima di interrompere l'istanza. A differenza dei volumi supportati da EBS, i volumi di archivio dell'istanza sono effimeri e non supportano la persistenza dei dati. Per ulteriori informazioni, vedi Cosa succede quando si interrompe un'istanza.
- Le operazioni di arresto e avvio sull'istanza costringono il kernel a interrompere qualsiasi processo in esecuzione. Si tratta di una soluzione temporanea per restituire risorse al sistema operativo. Se non risolvi la causa principale del problema, l'utilizzo eccessivo persisterà.
- L'indirizzo IPv4 pubblico statico che Amazon EC2 ha assegnato automaticamente all'istanza all'avvio o all'inizio cambia dopo l'arresto e l'avvio. Per conservare un indirizzo IPv4 pubblico che non cambia se l'istanza viene interrotta, usa un indirizzo IP elastico.
Per ulteriori informazioni, consulta Interrompere e avviare le istanze.
Verifica i parametri di utilizzo della CPU di Amazon CloudWatch
Visualizza le metriche di CloudWatch dell'istanza. Se l'utilizzo della CPU è pari o prossimo al 100%, utilizza le seguenti opzioni per la risoluzione dei problemi:
- Riavvia l'istanza per riportarla allo stato integro.
Nota: se i requisiti della CPU dell'istanza sono superiori a quelli offerti dal tipo di istanza corrente, il problema si ripresenta dopo il riavvio. - Valuta la possibilità di cambiare la tua istanza con un tipo di istanza che soddisfi i requisiti della tua CPU.
- Se la tua istanza è un'istanza a prestazioni espandibili (T2, T3 o T3a), controlla la relativa CPUCreditBalance elencando le metriche dell'istanza. Puoi elencare le metriche utilizzando la console CloudWatch o l'interfaccia della linea di comando AWS (AWS CLI).
Se il saldo del credito è vicino allo zero, la CPU dell'istanza potrebbe essere limitata. Se le specifiche del credito sono impostate su standard sull'istanza, è possibile modificarle su illimitato. Per ulteriori informazioni, consulta Modify the credit specification of a burstable performance instance.
Nota: se visualizzi errori durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS, assicurati di utilizzare la versione più recente di AWS CLI.
Verifica la presenza di errori nel log di sistema dell'istanza
Verifica nel log di sistema la presenza di errori relativi a Spazio esaurito sul dispositivo o Memoria esaurita.
Errore Spazio esaurito sul dispositivo
Se nel log di sistema dell'istanza viene visualizzato un errore simile a "OSError: [Error 28] No space left on device '/var/lib/'", allora il file system contenente la cartella elencata è pieno. In questo esempio, /var/lib è pieno.
È possibile liberare spazio nel file system utilizzando uno dei seguenti metodi:
Metodo 1: usa la console seriale EC2 per istanze Linux
Se hai attivato la console seriale EC2 per istanze Linux, puoi utilizzarla per risolvere i tipi di istanze basate su Nitro supportati e le istanze bare metal. La console seriale consente di risolvere problemi di avvio, configurazione di rete e configurazione SSH. La console seriale si connette all'istanza senza bisogno di una connessione di rete funzionante. Puoi accedere alla console seriale utilizzando la console Amazon EC2 o l'interfaccia della linea di comando di AWS.
Se non hai mai utilizzato la console seriale EC2, assicurati di controllare i prerequisiti e di configurare l'accesso prima di provare a connetterti. Se la tua istanza non è raggiungibile e non hai configurato l'accesso alla console seriale, segui le istruzioni nel Metodo 2: usare un'istanza di ripristino. Per informazioni sulla configurazione della console seriale EC2 per Linux, consulta Configurare l'accesso alla console seriale EC2.
Metodo 2: usare un'istanza di ripristino
Avvertenza: la procedura seguente richiede l'arresto dell'istanza. i dati archiviati nei volumi di archiviazione delle istanze vengono persi quando l'istanza viene fermata. Assicurati di salvare un backup dei dati prima di interrompere l'istanza. A differenza dei volumi supportati da EBS, i volumi di archivio dell'istanza sono effimeri e non supportano la persistenza dei dati. Per ulteriori informazioni, vedi Cosa succede quando si interrompe un'istanza.
1. Avvia una nuova istanza EC2 nel tuo cloud privato virtuale (VPC). Utilizza la stessa Amazon Machine Image (AMI) nella stessa zona di disponibilità dell'istanza compromessa. La nuova istanza diventerà la tua istanza di ripristino.
Oppure, usa un'istanza esistente a cui puoi accedere. L'istanza esistente deve utilizzare la stessa AMI e trovarsi nella stessa zona di disponibilità dell'istanza danneggiata
2. Arresta l'istanza danneggiata.
3. Scollega il volume root di Amazon Elastic Block Store (Amazon EBS) (/dev/xvda o**/dev/sda1**) dall'istanza danneggiata. Annota il nome del dispositivo (/dev/xvda o /dev/sda1) del tuo volume root.
4. Collega il volume EBS come dispositivo secondario (/dev/sdf) all'istanza di ripristino.
5. Connettiti alla tua istanza di ripristino tramite SSH.
6. Crea una directory dei punti di montaggio (/rescue) per il nuovo volume che hai collegato all'istanza di ripristino
$ sudo mkdir /rescue
7. Monta il volume nella directory che hai creato nel passaggio 6.
$ sudo mount /dev/xvdf1 /rescue
Il dispositivo (/dev/xvdf1) potrebbe essere collegato all'istanza di ripristino con un nome di dispositivo diverso. Utilizza il comando lsblk per visualizzare i dispositivi su disco disponibili, insieme ai relativi punti di montaggio, per determinare i nomi corretti dei dispositivi.
Nota: potresti visualizzare un messaggio di errore simile al seguente:
"...wrong fs type, bad option, bad superblock on /dev/nvme2n1, missing codepage or helper program, or other error."
L'errore precedente è causato da un conflitto UUID con il file system XFS. Se ricevi questo errore, vedi Perché non riesco a montare il mio volume Amazon EBS?
8. Esegui il comando du -h per verificare quali file occupano più spazio.
du -shcm /rescue/var/lib/* |sort -n
9. Elimina i file necessari per liberare spazio aggiuntivo.
10. Esegui il comando smonta per smontare il dispositivo secondario dall'istanza di ripristino.
$ sudo umount /rescue
Se l'operazione di smontaggio non va a buon fine, potrebbe essere necessario interrompere o riavviare l'istanza di ripristino per eseguire uno smontaggio pulito.
11. Scollega il volume secondario (/dev/sdf) dall'istanza di ripristino. Quindi, collegalo all'istanza originale come /dev/xvda (volume root).
12. Avvia l'istanza e verifica se è reattiva.
È possibile ridimensionare il volume EBS principale utilizzando i seguenti passaggi:
1. Richiedi la modifica delle dimensioni del volume EBS.
2. Estendi un file system Linux dopo aver ridimensionato un volume utilizzando un'istanza di ripristino
Errore Memoria esaurita
Se l'errore "Out of memory: kill process" appare nel log di sistema dell'istanza, la memoria dell'istanza è esaurita. Quando la memoria è esaurita, il kernel non dispone di memoria sufficiente per l'esecuzione e gli altri processi vengono terminati per liberare memoria.
Per ulteriori informazioni su come risolvere i problemi di memoria esaurita (OOM), vedi Out of memory:kill process.
Per controllare i log degli errori di memoria (Memoria esaurita), segui i passaggi indicati nel Metodo 2. Usa un'istanza di ripristino tramite il passaggio 7: monta il volume.
Quindi, usa i seguenti comandi per cercare nei log gli avvisi di esaurimento della memoria, a seconda della distribuzione Linux in uso:
Amazon Linux 1 e Amazon Linux 2
sudo grep -i -r 'out of memory' /var/log/
Amazon Linux 2023
$ sudo journalctl -p err | grep -i "out of memory"
-oppure-
$ sudo dmesg | grep -i "out of memory"
Per ulteriori informazioni su come risolvere i problemi di memoria esaurita (OOM), vedi Out of memory:kill process.
Errore di allocazione delle pagine
L'errore di allocazione delle pagine si verifica quando l'allocatore di memoria del kernel non soddisfa la richiesta di allocazione. Quando ciò accade, viene aggiunto un messaggio di errore di allocazione delle pagine al log di sistema.
Per risolvere questo problema di memoria insufficiente, valuta la possibilità di aggiornare l'istanza a un tipo di istanza più grande. Oppure, per i casi che utilizzano volumi di archivio dell'istanza effimeri, aggiungi spazio di swap all'istanza per ridurre la pressione sulla memoria.
Per ulteriori informazioni sulla configurazione dello spazio di swap, consulta quanto segue:
- Come faccio ad allocare la memoria per farla funzionare come spazio di swap in un'istanza Amazon EC2 utilizzando un file di swap?
- Come faccio ad allocare la memoria per funzionare come spazio di swap su un'istanza Amazon EC2 utilizzando una partizione sul mio disco rigido?
Nota: l'istanza utilizza lo spazio di swap quando la quantità di RAM è piena. Puoi utilizzare lo spazio di swap per le istanze con una piccola quantità di RAM, ma non sostituisce una quantità maggiore di RAM. Poiché lo spazio di swap si trova sul disco rigido dell'istanza, le prestazioni sono inferiori rispetto alla RAM effettiva. Per una memoria maggiore o più veloce, valuta la possibilità di aumentare le dimensioni dell'istanza.
Per ulteriori informazioni sugli errori di allocazione delle pagine, consulta What are page allocation failures sul sito Web di Red Hat.
Informazioni correlate
Perché la mia istanza EC2 Linux non è raggiungibile e non supera i controlli di stato?
Quali passaggi devo eseguire prima di cambiare il tipo di istanza della mia istanza EC2 Linux?
How do I diagnose high CPU utilization on an EC2 Windows instance?
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 2 anni fa