Vérifier la charge du serveur avec PHP


     2


Alaa-eddine

PHP

Dans ce billet, je vous propose un petit bout de code permettant de vérifier la charge de votre serveur en PHP.

Vous pouvez définir un pourcentage à partir duquel vous rendez votre site indisponible. ce dernier sera de nouveau accessible dès que la charge serveur redescend en dessous de cette valeur.

Le script CheckLoad

function CheckLoad($maxload, $message, $refreshTime = -1)
{
   $load = sys_getloadavg();
   $load = array_slice($load, 0, 1);
   $load = floatval($load[0]);
   if ($load >= $maxload)
   {
      header('HTTP/1.1 503 Too busy, try again later');
      $refreshMeta = '';
      if (is_int($refreshTime) && $refreshTime >= 0)
         $refreshMeta = '<META http-equiv="Refresh" content="120; URL='._SERVER["PHP_SELF"].'">';

      die('<html><head>'.$refreshMeta.'</head><body>'.$message.'</body></html>');
   }
}

Fonctionnement du script

L’utilisation est très simple, vous devez simplement appeler CheckLoad() avant toute autre code de votre page.

Par exemple, pour bloquer l’accès à une page quand la charge serveur dépasse 20% on fera cet appel.

CheckLoad(20, 'Service temporairement indisponnible...');

pour faire la même chose en retentant de charger la page toute les 30 secondes, en utilisera

CheckLoad(20, 'Service temporairement indisponnible... Nouvelle tentative automatique dans 30sec...', 30);

En plus de rendre votre site/page temporairement inaccessible, ce script envoi un code d’erreur HTTP 503 qui indique au client qu’il s’agit d’une indisponibilité temporaire du service, pour un utilisateur normal ce code est invisible, mais pour un moteur de recherche il est très utile car il le prévient qu’il faut revisiter cette page plutard ; vous préservez ainsi votre référencement intact (ou presque).

Cas d’utilisation (exemple réel)

Si vous hébergez votre site sur un serveur mutualisé et que vous consommez trop de ressources, il est fort probable que votre hébergeur suspende votre compte et vous invite à passez à un serveur dédié.

Il s’agit en général d’une alerte automatique levée par les services de monitoring de votre hébergeur et qui se déclenche dès que votre site franchis un seuil donné (précisé en général dans les CGV).

dans beaucoup de situations cette surcharge n’est occasionnelle est vous ne souhaitez pas encore passer en hébergement dédié.
L’astuce sera d’utiliser ce script en lui indiquant une charge en dessous de celle toléré par votre hébergeur, ainsi, au pire des cas votre site sera inaccessible durant quelques secondes voir quelques minutes.


Attention cette solution ne vous dispense pas de migrer votre site vers un serveur plus puissant (dédié, VPS, …etc) s’il consomme trop de ressources.

Je reviendrais sur le sujet de l’hébergement web dans un prochain billet. Et si vous avez des question sur le fonctionnement ou l’utilisation du script n’hésitez pas à les poser dans les commentaires 😉



 

A lire également

 
  • Hassan

    Salam,

    Merci bien pour ce script, ça évite bien les problèmes avec le fournisseur ^_^, mais comment ça la charge ? est ce que du CPU ou du RAM ou d’autre chose ?

  • Il s’agit de la charge moyenne du système comprenant RAM CPU et IO, c’est ce que tu vois dans load average quand tu tapes la commande top ou htop sous linux