Un site Web sur un hébergement partagé peut consommer toutes les ressources du système et compromettre les performances des autres sites Web. Ce problème est connu sous le nom de « Noisy neighbor » (autrement dit « voisin bruyant »).

L’extension Plesk Cgroups Manager vous aide à résoudre ce problème en gérant la consommation de CPU, RAM, bande passante pour la lecture et l’écriture du disque.

Pour chaque ressource du système, le Gestionnaire Cgroups vous permet de :

  • Définir un volume maximal (limite) sur la ressource consommée
  • Surveiller le volume de ressources consommées et envoyer des notifications par mail quand le volume dépasse un certain niveau (seuil)

Vous pouvez configurer le Gestionnaire Cgroups et définir la limite de ressource consommée sur les niveaux suivants :

  • Pour un pack de services, et par conséquent pour tous les abonnements couverts par ce pack.
  • Pour un abonnement unique.

Note: pour utiliser Cgroups sur un serveur Plesk avec un kernel personnalisé, vous devez définir plusieurs paramètres lors de la compilation du serveur.

Prérequis

Licence Plesk

Cgroups Manager est disponible pour les éditions Plesk suivantes :

  • Plesk Web Pro
  • Plesk Web Host

Si vous utilisez un pack Web Admin et souhaitez gérer la consommation de ressources de vos sites Web, envisagez une mise à niveau vers l’édition Web Pro et une répartition des sites Web sur plusieurs abonnements.

Licence de l’extension

Cgroups Manager est une extension payante. Vous pouvez l’acquérir individuellement ou via le pack d’hébergement.

OS et init system

Cgroups Manager est disponible pour :

  • Debian 8
  • Ubuntu 16.04 et Ubuntu 18.04
  • CentOS 7
  • Red Hat Enterprise Linux 7

Par défaut, toutes ces distributions utilisent l’init system systemd, requis pour Cgroups Manager. Toutefois, Plesk peut aussi être installé avec Debian avec un autre init system appelé System V. Pour identifier l’init system utilisé, exécutez cat /proc/1/comm dans l’interface de ligne de commande.

Note: Remarque : si vous installez Cgroups Manager sur Debian avec System V, Plesk le remplacera par systemd. Vous devrez redémarrer manuellement le système après l’installation pour que les modifications prennent effet.

Limitations de Debian 8

Par défaut, les fonctions de Cgroups Manager sont limitées sur Debian 8, dont le kernel ne prend pas en charge les limitations d’utilisation de ressources CPU et RAM Cgroups. En savoir plus sur Cgroups Manager pour Debian 8 et les éventuelles résolutions de problèmes.

Limitations pour Virtuozzo 6 et 7

Plesk installé sur un conteneur Virtuozzo 6 ne peut gérer que la RAM. Plesk installé sur un conteneur Virtuozzo 7 peut gérer la RAM et le CPU, mais non l’E/S disque. Ces limitations ne s’appliquent pas à Plesk installé sur une machine virtuelle Virtuozzo.

If your system does not meet some requirements, you can migrate Plesk to one that meets them.

Installation

Pour activer le Gestionnaire Cgroups :

  1. Installez le composant Contrôleur de ressources (Cgroups) en utilisant Plesk Installer :

    1. Allez sous Outils & Paramètres

    2. Cliquez sur le lien Mises à jour et à niveau

    3. Cliquez sur le lien Ajouter/Supprimer des composants

    4. Sélectionnez « Contrôleur de ressources (Cgroups) » et cliquez sur Continuer.

      Note: Remarque : si la composante souhaitée manque dans la liste des composantes disponibles, assurez-vous que votre système répond aux exigences.

  2. Démarrez la composante :

    1. Allez sous Outils & Paramètres
    2. Cliquez sur le lien Gestion des services
    3. Démarrez le service « Contrôleur de ressources (Cgroups) ».

Configurer le gestionnaire Cgroups

Note: Attention : en cas d’installation incorrecte du gestionnaire Cgroups, les sites Web peuvent ralentir, voire devenir indisponibles. Avant de procéder à des modifications, assurez-vous d’avoir lu et compris les instructions de ce chapitre.

Vous pouvez configurer le gestionnaire Cgroups aux niveaux suivants :

  • Pour un pack de services, et par conséquent pour tous les abonnements couverts par ce pack.
  • Pour un abonnement unique.

Les paramètres configurés au niveau de l’abonnement écrasent les paramètres configurés au niveau du pack de services. Vous ne pouvez pas utiliser les packs d’add-ons pour modifier les paramètres du gestionnaire Cgroups.

Une fois que vous avez installé et démarré le service, vous disposez des outils de configuration suivants :

Outil Pack de services Abonnement
Panneau de contrôle Plesk (utiliser la Vue Fournisseur de services)
  1. Allez dans Pack de services > onglet Packs d’hébergement.
  2. Cliquez sur le pack de services pour lequel vous voulez configurer le gestionnaire Cgroups.
  3. Ouvrez l’onglet RAM, CPU, E/S disque.
  1. Allez dans Abonnements.
  2. Cliquez sur l’abonnement pour lequel vous voulez configurer le gestionnaire Cgroups.
  3. Cliquez sur Personnaliser > onglet RAM, CPU, E/S disque.
Interface de ligne de commande de Plesk (CLI) Utilisez les options -cgroups* de l’utilitaire service_plan. Utilisez les options -cgroups* de l’utilitaire subscription_settings.
API XML de Plesk Consultez la section Gérer les packs de services. Consultez la section Gérer les abonnements.

Limiter la consommation de ressources

Définir les limites

Le premier paramètre disponible pour chaque ressource gérée est la valeur de la limite. Chaque ressource gérée a sa propre valeur de limite. Par défaut, les valeurs de la limite ne sont pas définies, car il s’agit de ressources non limitées.

Les abonnements peuvent partager des paramètres de limites, mais chacun a sa propre limite.

Si une ressrouce est limitée pour un abonnement spécifique :

  • Le Gestionnaire Cgroups surveille tous les processus appartenant à l’utilisateur système de l’abonnement. Ensemble, ces processus ne peuvent pas consommer plus que la valeur limite de chaque ressource.
  • Si un abonnement atteint cette limite, le système d’exploitation exécute certaines opérations, selon type de ressource.
  • Un abonnement ne peut pas dépasser une limite même si des ressources de ce type sont disponibles sur le serveur (cycles CPU inactifs, RAM libre, etc.).

Si une ressource n’est pas limitée pour un abonnement spécifique :

  • Les processus d’un abonnement peuvent utiliser autant de ressources qu’il y a de ressources disponibles.
  • La ressource est partagée entre les processus de tous les abonnements :
    • Le temps CPU et les E/S disque sont partagés de manière équivalente (environ).
    • La RAM est partagée selon la demande des processus.

Dans les deux cas, rien ne garantit qu’un abonnement dispose d’un volume minimum d’une ressource.

Paramètres de valeur autorisés pour les limites

Les paramètres des limites peuvent avoir les valeurs suivantes :

Paramètre Mesuré en Valeurs disponibles
Limite du CPU Pourcentage du temps CPU, 100 % correspondant à l’utilisation complète d’un cœur CPU Pas plus de 100 % * Nombre de cœurs CPU
Limite de la RAM Octets Min. 1 Mo
Vitesse d’écriture disque (E) Octets par seconde Min. 1 Mo/sec
Vitesse de lecture disque (S) Octets par seconde Min. 1 Mo/sec

Si le serveur dispose de plusieurs cœurs CPS, le volume disponible de CPS est égal à 100 % * nombre de cœurs CPU. Par exemple, si votre serveur a cœurs CPU, le volume de CPU disponible est de 400 %.

image 78709

Gestion de la consommation des ressources par le système

Lorsque le processus d’un abonnement spécifique utilise la valeur maximum autorisée d’une ressource, le système d’exploitation exécute certaines opérations, selon le type de ressource.

Ressource sur-utilisée Actions Impact
Bande passante pour la lecture et l’écriture du disque Le système restreint les processus de cet abonnement pour ne pas dépasser la limite autorisée pour les ressources. Les sites Web correspondants peuvent ralentir et nécessiter un temps de réponse plus long.
RAM Lorsque les processus d’un abonnement spécifique atteignent la limite de la RAM, le système tue le processus qui consomme le plus de mémoire. Le site Web correspondant peut devenir indisponible pour un certain temps et répondre aux requêtes avec un code HTTP 5xx.

Surveillance et notifications pour la consommation des ressources

Configurer la surveillance et les notifications

Une fois que vous avez défini la limite pour une ressource, vous pouvez aussi configurer Plesk pour surveiller la consommation de cette ressource.

Pour activer la surveillance, paramétrez les valeurs suivantes :

  • Seuil (« Notifier en cas de dépassement. » dans Plesk Panel)
  • Période

Pour désactiver la surveillance, supprimez la valeur seuil correspondante.

Paramètres de valeurs autorisés pour la surveillance

Les paramètres de la surveillance peuvent avoir les valeurs suivantes :

Paramètre Mesuré en Valeurs disponibles
Limite du CPU Pourcentage du temps CPU, 100 % correspondant à l’utilisation complète d’un cœur CPU Pas plus que la valeur limite du CPU
Limite de la RAM Octets Pas moins d’un 1 Mo et pas plus que la valeur limite de la RAM
Vitesse d’écriture disque (E) Octets par seconde Pas moins d’un 1 Mo par seconde et pas plus que la valeur limite d’écriture sur le disque
Vitesse de lecture disque (S) Octets par seconde Pas moins d’un 1 Mo par seconde et pas plus que la valeur limite de lecture sur le disque
Période de contrôle (pour n’importe quelle ressource) Secondes 300 (5 minutes), 3600 (1 heure) ou 86400 (24 heures)

Comment le système réalise la surveillance

Lorsque vous activez la surveillance des ressources pour une ou plusieurs ressources, le Gestionnaire Cgroups démarre la surveillance de leurs consommations. Si vous avez activé la surveillance des ressources au niveau de l’abonnement, l’utilisation des ressources sera surveillée pour cet abonnement. Si vous avez activé la surveillance des ressources au niveau du pack de services, l’utilisation des ressources pour tous les abonnements basés sur ce pack de services sera surveillée à la place :

  1. Toutes les 5 minutes, le Gestionnaire Cgroups comptabilise la consommation moyenne des ressources d’un abonnement et vérifie si elle est égale ou supérieure au seuil.
  2. Pendant chaque période, le Gestionnaire Cgroups vérifie combien de fois l’abonnement a dépassé le seuil durant la dernière période de temps.
    • Si l’abonnement a dépassé le seuil pendant tous les intervalles d’une période, le Gestionnaire Cgroups envoie une notification par e-mail.
    • Si cela arrive pour plus d’une période, cela ne génère pas l’envoi de notifications supplémentaires.

Exemple de surveillance

Cet exemple vous aidera à mieux comprendre comment le Gestionnaire Cgroups réalise la surveillance et déclenche les notifications.

Imaginez un pack d’abonnement P avec les paramètres suivants :

Paramètre Valeur
Limite CPU 200%
Seuil CPU 160%
Période de contrôle CPU 1 heure

Comme expliqué auparavant, 100 % signifie qu’un cœur de CPU est entièrement utilisé.

Ce pack comprend deux abonnements : A et B.

L’abonnement A a une tâche lourde pour le CPU qui tourne toutes les heures et dure environ 10 minutes. Pendant ces 10 minutes, les processus d’abonnement consomment plus de 160 % du temps du CPU. Le reste du temps, l’abonnement consomme moins de 160 % du temps du CPU. Cela ne compte pas pour les notifications s’il atteint la valeur limite.

Le site Web de l’abonnement B est sous une lourde charge. Les processus d’abonnement consomment toujours plus de 160 % du temps du CPU.

Le Gestionnaire Cgroups comptabilise la consommation moyenne pour chaque intervalle de 5 minutes. Donc, au bout d’une heure, il a les résultats suivants :

  • L’abonnement A a dépassé le seuil pendant deux intervalles sur 12. Le Gestionnaire Cgroups n’enverra pas de notification.
  • L’abonnement B a dépassé le seuil sur la totalité des 12 intervalles. Le Gestionnaire Cgroups va envoyer une notification, mais ne la répétera pas si la charge continue.

Destinataire et contenu des notifications

Pour définir qui recevra les notifications :

  1. Allez dans Outils & Paramètres > Notifications.
  2. Sélectionnez les destinataires voulus à côté de CPU, RAM et E/S Disque (Cgroups).

Le contenu de chaque message de notification est créé à partir d’un template. Pour lire et modifier le template :

  1. Allez dans Outils & Paramètres > Notifications.
  2. Cliquez sur le bouton le plus à droite à côté de CPU, RAM et E/S Disque (Cgroups).

Pour en savoir plus, lisez la documentation sur les notifications automatiques par mail.

Restrictions

Certains problèmes techniques et commerciaux ne peuvent pas être résolus par la gestion des ressources :

  • Les clients qui ont surutilisé les ressources auparavant vont vraisemblablement expérimenter des performances les plus mauvaises.
  • Le Gestionnaire Cgroups ne comptabilise ni ne limite les ressources pour les applications Web Ruby, Python et Node.js utilisant Phusion Passenger.

Désactiver le gestionnaire Cgroups

Pour masquer la fonctionnalité du gestionnaire Cgroups, ajoutez ces lignes au fichier panel.ini :

[resourceController]
enabled = false