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

Dernière mise à jour : 2021-05-07

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 de l'état 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, cela signifie 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 la section Modification de la spécification de crédits d'une instance à capacité extensible.

Remarque : en cas d'erreurs lors de l'exécution des commandes depuis AWS CLI, assurez-vous d'utiliser la version la plus récente.

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 l'appareil »

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é est plein. (Dans cet exemple, /var/lib est le dossier.)

Vous pouvez libérer de l'espace sur le système de fichiers à l'aide d'une des méthodes suivantes :

Méthode 1 : utilisation d'EC2 Serial Console

Si vous avez activé EC2 Serial Console pour Linux, vous pouvez l'utiliser pour résoudre les problèmes liés aux types d'instance Nitro pris en charge. EC2 Serial Console vous aide à résoudre les problèmes de démarrage, de configuration réseau et de configuration SSH. EC2 Serial Console se connecte à votre instance sans qu'aucune connexion réseau ne soit nécessaire. Vous pouvez accéder à EC2 Serial Console à l'aide de la console Amazon EC2 ou de l'interface de ligne de commande AWS (AWS CLI).

Avant d'utiliser EC2 Serial Console, accordez-lui l'accès au niveau du compte. Créez ensuite des stratégies AWS Identity and Access Management (IAM) accordant l'accès à vos utilisateurs IAM. En outre, chaque instance qui utilise la console série doit inclure au moins un utilisateur avec mot de passe. Si votre instance n'est pas accessible et que vous n'avez pas configuré l'accès à EC2 Serial Console, suivez les instructions de la section suivante, Méthode 2 : utilisation d'une instance de secours. Pour en savoir plus sur la configuration d'EC2 Serial Console pour Linux, consultez Configuration de l'accès à EC2 Serial Console.

Méthode 2 : utilisation d'une instance de secours

Avertissement : avant d'arrêter et de démarrer votre instance, assurez-vous de bien comprendre les points suivants :

  • 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 la section Déterminer le type de périphérique racine de votre instance.
  • L'arrêt de l'instance peut mettre fin à l'instance si celle-ci fait partie d'un groupe Auto Scaling Amazon EC2. Les instances lancées avec Amazon EMR, AWS CloudFormation ou AWS Elastic Beanstalk peuvent faire partie d'un groupe Auto Scaling AWS. Dans ce scénario, la résiliation de l'instance dépend des paramètres de protection contre la diminution de la taille d'instance 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 une adresse IP publique, lors de l'acheminement du trafic externe vers votre instance. Si vous utilisez Amazon Route 53, il peut être nécessaire de mettre à jour les enregistrements DNS Route 53 lorsque l'adresse IP publique change.

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. La 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 qu'appareil 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 sur le répertoire que vous avez créé à l'étape 6.

$ sudo mount /dev/xvdf1 /rescue

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

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 unmount pour démonter l'appareil 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 la section Mémoire insuffisante : arrêter le processus.