web-dev-qa-db-fra.com

Comment implémenter un "fail baleine" pour limiter gracieusement la charge du serveur (Solutions pour la gestion de la capacité du système)

Avec notre site Web, nous voulons faire en sorte que si le site est sur le point de tomber en panne, il affiche à la place un 503 personnalisé (basé sur une limite de charge du serveur définie par nous). Y at-il quelque chose qui peut déjà gérer cela qui est déjà intégré, ou un plugin qui pourrait aider?

Je sais que des plug-ins de mode de maintenance à commutation manuelle sont disponibles, mais si le site rencontre un trafic important, ils seront supprimés.

5
Diesel Laws

Twitter et d'autres sites à volume élevé utilisent probablement cette couche avant les serveurs. Probablement avec un équilibreur de charge capable de détecter la charge du serveur sur tous les serveurs et si la charge est trop élevée (lorsque les machines cessent de répondre), elles redirigent le trafic vers un serveur qui renvoie uniquement la page "fail whale".

Cette réponse sur le dépassement de capacité suggère d'examiner sys_getloadavg() et d'afficher une erreur lorsqu'elle est trop élevée (et "trop ​​élevé" doit être définie par essais et erreurs). ). Je le ferais dans le fichier index.php principal qui "démarre" WordPress, pour obtenir une sortie rapide et ne pas surcharger le serveur.

4
Jan Fabry

Si votre système est sous Linux, vous pouvez lire la charge réelle du serveur à partir de /proc/loadavg

Par exemple:

$load = reset ( explode ( ' ' , file_get_contents('/proc/loadavg') ) );

if ($load > 3.14 )
{
    // load too high, 
    header('HTTP/1.1 503 Service Temporarily Unavailable');
    header('Status: 503 Service Temporarily Unavailable');
    header('Retry-After: 60');
    fail_whale();
}

EDIT: ajout de lignes de méthode d’en-tête.

2
petermolnar

Vous pouvez personnaliser le message pour le moment où la base de données est hors service par db-error.php dans le répertoire wp-content.

Mais si PHP est en panne, je ne pense pas qu'il y ait quoi que ce soit que WP ou son plugin puisse le faire. Il est préférable de demander à votre hébergeur comment personnaliser la page 503 du serveur.

1
Rarst

Dans votre fichier .htaccess, ajoutez cette ligne:

ErrorDocument 503 /error503.html

Créez ensuite un fichier error503.html à la racine du site contenant vos éléments personnalisés.

Cela peut ou peut ne pas fonctionner selon la configuration de votre hébergement.

0
Otto