Pourquoi mon instance Linux EC2 ne répond-elle plus lors d'une surutilisation des ressources ?

Dernière mise à jour : 25/10/2021

Mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2) ne répond plus en raison d'une surutilisation des ressources. Comment puis-je éviter ce problème ?

Brève description

Plusieurs causes courantes expliquent pourquoi une instance ne répond plus :

Mémoire : les instances EC2 ne disposent pas d'espace d'échange alloué par défaut. Le manque de mémoire peut déclencher l'appel au gestionnaire OOM (Linux Out Of Memory). Le gestionnaire OOM résilie les processus tels qu'une base de données, un serveur web ou le service SSH.

Mise en réseaux : sans mise en réseaux, votre système ne peut pas répondre aux demandes ARP à partir des vérifications de statut. Lorsque cela se produit, votre instance ne parvient pas à communiquer avec les autres hôtes.

Amazon Elastic Block Store (Amazon EBS) : sans I/O disque, les instructions de lecture ou d'écriture sont bloquées. Par exemple, la création de fichiers temporaires, les lectures à partir de bibliothèques système ou de bases de données.

CPU : toutes les tâches précédentes nécessitent du temps CPU pour fonctionner. L'utilisation de 100 % du CPU pendant une période prolongée empêche le noyau d'effectuer les opérations du système d'exploitation habituelles.

Ces problèmes peuvent également provoquer un effet boule de neige. Par exemple, vous manquez de mémoire et le gestionnaire OOM résilie un processus important. Puis, un deuxième processus qui s'appuie sur le premier processus arrêté démarre un nombre beaucoup plus élevé de cycles CPU. Si cette tâche est liée au disque, ce cycle peut également épuiser le volume EBS. De plus, le problème peut être transféré vers une autre instance qui attend une communication de la part de l'instance qui ne répond pas.

Solution

Si votre système cesse souvent de répondre en raison d'une surutilisation des ressources, procédez comme suit :

Collecter des informations

  1. Utilisez un outil de surveillance tel qu'Amazon CloudWatch afin d'observer les tendances et les modèles d'utilisation élevée des ressources.
  2. Si vous disposez de plusieurs services et que vous ne savez pas lequel surutilise les ressources, installez un utilitaire tel qu'atop.
  3. Consultez les journaux de votre application et de votre système d'exploitation. Ces journaux se situent généralement dans /var/log/.
  4. Consultez l'historique des commandes pour vérifier si une erreur humaine a eu lieu. L'historique des commandes se situe généralement dans le fichier ~/.bash_history.
  5. Consultez les tâches cronjobs en exécutant la commande crontab -l.

Agir en fonction des données acquises

  • Vous constaterez peut-être que votre application nécessite des modifications de configuration ou de code afin d'optimiser l'utilisation des ressources.
  • Si vos processus utilisent beaucoup de ressources pour des raisons valables, telles qu'un nombre élevé d'utilisateurs, envisagez de mettre à niveau votre instance.
    AWS Compute Optimizer est une source utile pour générer des tailles d'instance recommandées. Vous pouvez également envisager une mise à l'échelle horizontale à l'aide d'Amazon EC2 Auto Scaling.
  • Si vous souhaitez davantage de visibilité sur les commandes utilisateur ainsi que sur les modifications de configuration, vous pouvez installer `audit` pour suivre les modifications.

Éviter une surutilisation future

  1. Avant de déployer une nouvelle application en production, créez un environnement de test et un benchmark afin de déterminer le calcul, la mémoire, l'EBS et le réseau nécessaires.
  2. Déployez en fonction de vos benchmarks, tout en développant la tolérance aux pannes. Pour plus d'informations, consultez les ressources suivantes :
    Concevoir des interactions dans un système distribué pour éviter les défaillances
    Didacticiel : configurer une application mise à l’échelle et à charge équilibrée
  3. Continuez à surveiller vos instances et créez des alarmes pour des seuils spécifiques d'utilisation des ressources.

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?