Perché la mia istanza EC2 Linux non sta rispondendo a causa di un eccessivo utilizzo delle risorse?

Ultimo aggiornamento: 25/10/2021

L'istanza Linux Amazon Elastic Compute Cloud (Amazon EC2) non risponde a causa di un eccessivo utilizzo delle risorse. Come posso impedirlo?

Breve descrizione

Esistono diverse cause comuni per cui un'istanza non risponde:

Memoria: le istanze EC2 non dispongono di spazio di scambio allocato di default. L'esaurirsi della memoria può richiamare il gestore Linux Out Of Memory (OOM). Il gestore OOM termina i processi, ad esempio un database, un server Web o il servizio SSH.

Rete: senza rete, il sistema non è in grado di rispondere alle richieste ARP dei controlli di stato. In questo caso, l'istanza non riesce a comunicare con altri host.

Amazon Elastic Block Store (Amazon EBS): senza I/O su disco, le istruzioni di lettura o scrittura si bloccano. Ad esempio, creazione di file temporanei, letture da librerie di sistema o database.

CPU: tutti i processi precedenti richiedono tempo della CPU per funzionare. L'utilizzo della CPU al 100% per un periodo prolungato impedisce al kernel di eseguire le normali operazioni del sistema operativo.

Questi problemi potrebbero anche accumularsi in un effetto palla di neve. Ad esempio, si esauriscono la memoria e il gestore di OOM termina un processo importante. Ora, un secondo processo, che si basa sul primo processo che è stato interrotto, avvia un numero molto più elevato di cicli della CPU. Se questo processo è correlato al disco, questo ciclo può anche esaurire il volume EBS. Inoltre, il problema potrebbe essere trasferito a un'istanza diversa che prevede una comunicazione dall'istanza che non risponde.

Risoluzione

Se il tuo sistema spesso non risponde a causa di un eccessivo utilizzo delle risorse, procedi come segue:

Raccogli informazioni

  1. Utilizza uno strumento di monitoraggio come Amazon CloudWatch per osservare tendenze e modelli di elevato utilizzo delle risorse.
  2. Se disponi di più servizi e non sei sicuro di quale stia utilizzando eccessivamente le risorse, installa un'utilità come atop.
  3. Esamina i registri dell'applicazione e del sistema operativo. Questi registri si trovano solitamente in /var/log/.
  4. Esamina la cronologia dei comandi per verificare se si è verificato un errore umano. La cronologia dei comandi si trova solitamente nel file ~/.bash_history.
  5. Esamina cronjobs eseguendo il comando crontab -l.

Agisci in base ai dati acquisiti

Previeni l'utilizzo eccessivo futuro

  1. Prima di distribuire una nuova applicazione in produzione, crea un ambiente di test e un benchmark per determinare il calcolo, la memoria, l'EBS e la rete necessari.
  2. Implementa in base ai tuoi benchmark, sviluppando al contempo la tolleranza ai guasti. Per ulteriori informazioni, consulta quanto segue:
    Progetta interazioni in un sistema distribuito per prevenire guasti
    Tutorial: imposta un'applicazione dimensionabile e con bilanciamento del carico
  3. Continua a monitorare le tue istanze e crea allarmi per determinate soglie di utilizzo delle risorse.

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?