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?

9 minuti di lettura
0

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:

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:

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?

AWS UFFICIALE
AWS UFFICIALEAggiornata 10 mesi fa