Script pour nettoyer les processus Node.js qui bloquent votre hébergement web

Ce script doit être exécuté comme une tâche cron sur votre hébergement web cPanel.

Ce n’est pas la solution parfaite (car elle n’existe pas) – c’est plutôt une solution temporaire de contournement, car elle ne résout pas les problèmes réels. Ce que fait le script, c’est gérer les symptômes (processus bloqués) en leur envoyant un signal SIGTERM afin de les forcer à se terminer – et ainsi libérer les ressources verrouillées – ce qui apporte de la stabilité à l’application NodeJS hébergée sur l’hébergement web.

Objectif
Exécuter des applications NodeJS dans un environnement hébergé sur cPanel est un peu différent de l’exécution locale de NodeJS. Les processus peuvent échouer et amener le système de contrôle de processus de cPanel à redémarrer une nouvelle instance de NodeJS – ou des processus qui auraient dû se terminer restent bloqués comme des « processus fantômes ». Cela peut finir par consommer toutes les ressources jusqu’à ce que le Resource Monitor de cPanel bloque toute utilisation supplémentaire.

cleanup_orphans.sh [options] 'SEARCHSTRING'

    Options :
    -v    Verbose
    -d    Dry-run - afficher le comportement prévu sans rien modifier
    -f    Force kill - utiliser SIGKILL au lieu de SIGTERM
    -h    Help (ce message d’aide)

    SEARCHSTRING par défaut : 'lsnode:/home/$USER/'

    Si appelé sans 'SEARCHSTRING', le script parcourt le tableau interne 
    de domaines (noms de dossiers ajoutés à la chaîne de recherche), afin
    de nettoyer chaque 'domaine' séparément, un par un.

Si le script est appelé avec 'SEARCHSTRING' comme paramètre, la SEARCHSTRING prédéfinie est remplacée par l’entrée fournie.

Sinon, le script parcourt le tableau interne de domaines (noms de dossiers ajoutés à la chaîne de recherche) pour nettoyer chaque « domaine » séparément, un par un.

Journalisation

La journalisation est mise en œuvre afin de disposer d’un historique – pour pouvoir suivre le nombre de processus traités. En même temps, une journalisation excessive peut créer un nouveau problème ; nous ne voulons pas que le disque se remplisse à cause d’une journalisation sans fin. La solution est de limiter la journalisation à deux fichiers, chacun pouvant contenir jusqu’à 1000 lignes.

Mise en œuvre dans une solution cPanel spécifique.

Mise en œuvre dans une solution cPanel spécifique

  1. Copiez le script « tel quel » sur un disque local.
  2. Le script contient ce tableau associatif, qui inclut les noms de dossiers racine de toutes les applications Node.js hébergées sur cPanel :
    declare -A domains
    domains[1]='mydomain.com'
    domains[2]='api.mydomain.com'
    domains[3]='dev.mydomain.com'
    domains[4]='test.mydomain.com'
    Modifiez le tableau dans votre éditeur préféré afin qu’il corresponde à votre solution d’hébergement spécifique.
  3. Vérifiez que SEARCHSTRING contient bien ce que vous souhaitez que le script recherche :
    SEARCHSTRING="lsnode:/home/$USER/"
  4. Ajustez la taille du journal si vous le souhaitez. Voici la partie qui gère la taille et la rotation des fichiers journaux (je ne vais pas entrer dans les détails ici) :
    # rotate log - maintenir la taille du journal dans une limite acceptable
    LOGSIZE=$(cat $LOGDIR/$LOGFILE | wc -l)
    if [ $LOGSIZE -gt 1000 ]; then
        mv -f $LOGDIR/$LOGFILE $LOGDIR/$LOGFILE.1
    fi
  5. Ajustez LOGDIR si vous le souhaitez – il est actuellement configuré pour enregistrer dans le dossier du script.
  6. Créez un dossier sur votre hébergement web pour stocker vos propres scripts – par exemple : /cronscripts.
  7. Copiez le cleanup_orphans.sh personnalisé dans le dossier de l’hébergement : /cronscripts/cleanup_orphans.sh.
  8. Ajoutez une tâche cron dans cPanel. Je recommande d’exécuter le script régulièrement, par exemple toutes les 5 à 30 minutes (selon le volume de trafic qui crée des processus « orphelins »).
    Exemple :
    */5 * * * * /home/infoqrco/cronscripts/cleanup_orphans.sh
  9. Surveillez la première exécution ; essayez éventuellement les options -v (verbose) et -d (dry-run). Vérifiez que le fichier journal est créé et que la tâche cron fonctionne comme prévu.

Terminé ! Vos processus Node.js « orphelins » sont désormais gérés automatiquement.

Guide original créé par l’un de nos clients ingénieux ;-) : https://github.com/jlmantov/shellscripts/blob/main/docs/cleanup_orphans.md

  • 0 Utilisateurs l'ont trouvée utile
Cette réponse était-elle pertinente?

Vous n’avez pas trouvé de solution ?

Si vous n’avez pas trouvé de solution en recherchant ou en explorant nos catégories, vous pouvez ouvrir un nouveau ticket de support.

Ouvrir un nouveau ticket

Articles connexes

Comment corriger les erreurs 503 sur votre site web

Une erreur 503 se produit lorsque les ressources disponibles ne suffisent pas pour exécuter un...

Comment résoudre les erreurs 503 lors de l’importation ou du téléchargement de données

Erreur 503 : Comment gérer le dépassement des limites du serveurUne erreur 503 est un problème...

Je n’arrive pas à accéder à mes propres pages, mais les autres y arrivent

Si vous constatez que vous n’arrivez pas à vous connecter à cPanel chez nous ou à voir vos...

Comment limiter la taille de vos fichiers error_log

Chaque fois qu’une erreur PHP se produit sur votre site – qu’il s’agisse simplement d’un...