1 votes

Panne du serveur en quelques minutes en raison d'une utilisation élevée de httpd-apache (attaque ou bug)

La semaine dernière, j'ai soudainement reçu des erreurs sur mon serveur. J'essaie d'accéder à mon site web et je reçois des erreurs 503.

Quand je vérifie top et d'autres choses, je les vois :

  • 60-65 Processus httpd (apache). (Normalement j'ai 30-35 processus httpd)
    Vous pouvez voir le graphique ici : processus httpd
  • MySQL fait ~350 Mo de swap. (Normalement, il fait 40-50 Mo de swap).
    C'est ce que dit l'abécédaire du tuning :
    • Courant max_connexions = 250
    • Nombre actuel de threads_connectés = 96
    • Historique max_utilisé_connexions = 97
  • Servez tous les graphiques : données générales
  • À l'intérieur de httpd.conf
    • ServerLimit 60
    • MaxClients 60
  • Sur var\www\vhosts\example.com\logs\access_log il n'y a rien qui ressemble à une attaque (D)DOS. Je vois une requête normale du serveur.
  • Rien de suspect dans var\log\httpd\access_log
  • Dans mon var\www\vhosts\example.com\logs\error_log Je vois trop d'erreurs comme celle-ci :
    • [Fri Jan 17 10:56:26 2014] [warn] [client 78.180.71.157] mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper
  • À l'intérieur de \var\log\mysqld_log aucune erreur
  • À l'intérieur de \var\log\error_log aucune erreur dans ce temps
  • À l'intérieur de \var\log\suexec_log aucune erreur

Comment puis-je diagnostiquer ce qui fait que mon site web a un DISK IO de 100%, une charge moyenne de 10, un swapping très élevé, et que le serveur ne répond pas aux requêtes. Et comment puis-je empêcher que cela se produise à l'avenir ?

Lorsque je redémarre mysql et httpd le problème se résout. Mais comment puis-je diagnostiquer la cause

2voto

Nathan C Points 14821

L'avertissement mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper signifie qu'Apache a épuisé toutes les ressources à sa disposition et ne peut pas servir le client. Le client recevra un 503 erreur.

D'après les graphiques, c'est soit un pic de trafic, soit une mauvaise configuration du logiciel qui est à l'origine de vos problèmes. Lorsque les demandes de RAM augmentent, votre serveur n'a plus de RAM et il augmente les entrées/sorties pour échanger tout ce qu'il peut sur le disque (d'où les 100 % d'entrées/sorties). iowait d'augmenter également. Une fois que toutes les ressources sont épuisées ou que votre serveur est suffisamment lent pour que le temps d'attente soit dépassé, Apache émet cet avertissement.

Le redémarrage libère probablement cette mémoire. Votre réponse serait l'une des deux choses suivantes : 1) augmenter la RAM disponible sur votre serveur par une augmentation réelle ou en déchargeant MySQL (qui est un monstre de mémoire) sur un autre serveur, ou 2) revoir votre code pour voir s'il y a une fuite.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X