La vérification du statut de mon instance EC2 Linux a échoué en raison d'une surutilisation de ses ressources. Comment puis-je résoudre ce problème ?

Date de la dernière mise à jour : 29/05/2020

La vérification du statut de mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2) a échoué en raison d'une surutilisation de ses ressources. Comment puis-je résoudre ce problème ?

Brève description

Il existe plusieurs raisons pour lesquelles la vérification du statut de votre instance peut échouer en raison d'une surutilisation. En voici les trois principales :

  • L'utilisation du processeur de votre instance est proche de 100 % et l'instance ne dispose pas de suffisamment de capacité de calcul pour que le noyau s'exécute.
  • Le dispositif racine est plein à 100 % et l'instance se bloque lors du démarrage.
  • Les processus en cours d'exécution sur l'instance utilisent toute sa mémoire, ce qui empêche l'exécution du noyau.

Résolution

Vérifier les métriques d'utilisation du processeur Amazon CloudWatch

Consultez les métriques CloudWatch de l'instance. Utilisez les options suivantes pour résoudre le problème si l'utilisation du processeur est égale ou proche de 100 % :

  • Redémarrez votre instance pour la ramener à un état sain.
    Remarque : le problème se produira à nouveau après un redémarrage si les besoins en processeur de votre instance sont supérieurs à ce que votre type d'instance actuel peut offrir.
  • Pensez à remplacer votre instance par un type d'instance qui répond à vos besoins en processeur.
  • Si votre instance est une instance à capacité extensible (T2, T3 ou T3a), vérifiez son CPUCreditBalance en répertoriant les métriques de l'instance. Vous pouvez répertorier les métriques à l'aide de la console CloudWatch ou de l'interface de ligne de commande AWS (AWS CLI).
    Si le solde de crédits est proche de zéro, c'est que le processeur de l'instance est probablement limité. Si la spécification de crédits est « Standard » sur l'instance, vous pouvez définir la spécification sur « Illimité ». Pour plus d'informations sur la modification de la spécification de crédits, consultez Modification de la spécification de crédits d'une instance à capacité extensible.

Vérifier la présence d'erreurs dans le journal système de l'instance

Dans le journal système recherchez l'erreur « Aucun espace restant sur le dispositif » ou « Mémoire insuffisante ».

Erreur « Aucun espace restant sur dispositif »

Si une erreur similaire à, « OSError : [Errno 28] Aucun espace restant sur le dispositif '/var/lib/ »' figure dans le journal système de l'instance, c'est que le système de fichiers contenant le dossier répertorié (/var/lib dans cet exemple) est plein.

Vous pouvez libérer de l'espace dans le système de fichiers à l'aide d'une instance de secours.

Avertissement : avant d'arrêter et de démarrer votre instance, veillez à bien comprendre ce qui suit :

  • Les données de stockage d'instance sont perdues lorsque vous arrêtez et démarrez une instance. Les données sont perdues lorsque vous arrêtez l'instance si votre instance est basée sur le stockage d'instance ou dispose de volumes de stockage d'instance contenant des données. Pour plus d'informations, consultez Identification du type de dispositif racine de votre instance.
  • L'arrêt de l'instance peut mettre fin à l'instance si votre instance fait partie d'un groupe Auto Scaling d'Amazon EC2. Votre instance peut faire partie d'un groupe Auto Scaling d'AWS si vous avez lancé l'instance avec Amazon EMR, AWS CloudFormation ou AWS Elastic Beanstalk. Dans ce cas, la mise hors service dépend des paramètres de protection des instances définis pour votre groupe Auto Scaling. Si votre instance fait partie d'un groupe Auto Scaling, supprimez-la temporairement du groupe avant d'exécuter les étapes de résolution.
  • L'arrêt et le redémarrage de l'instance entraînent la modification de son adresse IP publique. Il est recommandé d'utiliser une adresse IP Elastic, et non pas une adresse IP publique pour l'acheminement du trafic externe vers votre instance. Si vous utilisez Route 53, il peut être nécessaire de mettre à jour les enregistrements DNS Route 53 lorsque l'adresse IP publique change.
  • L'instance est mise hors service lorsqu'elle est arrêtée si le comportement d'arrêt de l'instance est Mettre hors service. Vous pouvez modifier le comportement d'arrêt de l'instance pour éviter cela.

1.    Lancez une nouvelle instance EC2 dans votre Virtual Private Cloud (VPC) en utilisant la même Amazon Machine Image (AMI) et dans la même zone de disponibilité que l'instance affectée. Cette nouvelle instance devient votre instance de secours.

Vous pouvez également utiliser une instance existante à laquelle vous pouvez accéder, si elle utilise la même AMI et se trouve dans la même zone de disponibilité que votre instance affectée.

2.    Arrêtez l'instance affectée.

3.    Détachez le volume racine Amazon Elastic Block Store (Amazon EBS) (/dev/xvda ou /dev/sda1) de l'instance affectée. Notez le nom du dispositif (/dev/xvda ou /dev/sda1) de votre volume racine.

4.    Attachez le volume EBS en tant que dispositif secondaire (/dev/sdf) à l'instance de secours.

5.    Connectez-vous à l'instance de secours en utilisant SSH.

6.    Créez un répertoire de point de montage (/rescue) pour le nouveau volume attaché à l'instance de secours.

$ sudo mkdir /rescue

7.    Montez le volume dans le répertoire que vous avez créé à l'étape 6.

$ sudo mount /dev/xvdf1 /rescue

Remarque : le dispositif (/dev/xvdf1) peut être attaché à l'instance de secours avec un nom de périphérique différent. Utilisez la commande lsblk pour afficher vos dispositifs de disque disponibles, ainsi que leurs points de montage, afin de déterminer les noms de dispositif pertinents.

8.    Exécutez la commande du -h pour identifier les fichiers qui occupent le plus d'espace.

du -h /recovery/var/lib

9.    Supprimez des fichiers selon les besoins pour libérer de l'espace supplémentaire.

10.    Exécutez la commande unmountpour démonter le dispositif secondaire à partir de votre instance de secours.

$ sudo umount /rescue

Si le démontage n'aboutit pas, il peut être nécessaire d'arrêter ou de redémarrer l'instance de secours pour effectuer un démontage propre.

11.    Détachez le volume secondaire (/dev/sdf) de l'instance de secours. Ensuite, attachez-le à l'instance d'origine en tant que /dev/xvda (volume racine).

12.    Démarrez l'instance, puis vérifiez qu'elle répond.

Erreur de mémoire insuffisante

Si l'erreur « Mémoire insuffisante : arrêter le processus » figure dans le journal système de l'instance, c'est que vous êtes à court de mémoire d'instance. Dans ce cas, le noyau n'a pas suffisamment de mémoire pour s'exécuter et d'autres processus sont arrêtés pour libérer de la mémoire.

Pour plus d'informations sur la résolution des problèmes de mémoire insuffisante (OOM) consultez Mémoire insuffisante : tuer le processus.