Réglage ultime :)

8 réponses
AuteurMessage

Rano |
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 23/09/2009 à 20:42

Bonsoir,

Juste pour partager deux éléments que j'ai appris dernièrement :
Tout d'abord si vous ne le connaissez pas je vous recommande floodmonOuvrir dans une nouvelle fenetre :

Floodmon est un petit daemon pour surveiller, alerter et mitiger les attaques SYN flood


Sur mes serveurs, en heure de pointe, il me restait une ultime erreur incompréhensible qui provoquait, avec peut etre une requete sur 10000, aucun résultat d'apache. Après avoir absolument tout checké et vu le taux d'erreur j'avais abandonné depuis plusieurs mois et grâce à Floodmon j'ai identifié le problème !

Comme indiqué plus haut, toute application appelant la fonction listen() lui passe 2 paramètres, l'un étant la taille de la file d'attente, la backlog. Apache v2.x* ne déroge pas à la règle et utilise une backlog DEFAULT_LISTENBACKLOG dont la longueur est fixée à 511 (cf mpm_common.h). Cependant comme nous l'avons déjà vu, Linux réduit la taille de la backlog à la valeur de SOMAXCONN si elle lui est supérieure donc, lors de son lancement, Apache n'a plus une backlog de 511 mais uniquement de 128, valeur par défaut de SOMAXCONN.
Cette disparité des valeurs par défaut Apache/Linux est plutôt problématique : lors d'une attaque SYN flood sur le port 80, très rapidement Apache ne semble plus répondre. En fait, ce n'est pas Apache mais le kernel qui rejette les nouvelles connexions, puisque la file d'attente des SYN et celle de l'application sont toutes les deux directement liées pour la gestion des nouvelles connexions et leur rejet. Il est important de comprendre que durant toute l'attaque, Apache n'est pas sollicité (il ne sait même pas qu'il y a une attaque en cours) car, et c'est le principe du SYN flood, aucune connexion n'est établie. Les SYN restent dans la file d'attente des connexions incomplètes du kernel.
Heureusement, DEFAULT_LISTENBACKLOG peut être modifiée grace à la directive ListenBacklog qui doit être ajoutée au fichier apache2.conf (ou httpd.conf). Etant donné que floodmon donne des valeurs généreuses à SOMAXCONN et tcp_max_syn_backlog (minimum 10,000), il vous est conseillé d'augmenter largement la valeur de la backlog d'Apache tant que vous utilisez floodmon. Celle-ci dépendra de la puissance de votre serveur, du nombre de visiteurs et bien entendu d'une éventuelle attaque. Une valeur minimale de 5000 semble être assez confortable pour faire face à une attaque de moyenne envergure sur le port 80.
Editez votre fichier apache2.conf ou httpd.conf et ajoutez la valeur que vous souhaitez utiliser. Exemple avec une backlog de 5000 :

ListenBacklog 5000

Modifiez la valeur de SOMAXCONN (uniquement si floodmon ne tourne pas !) :

echo 5000 > /proc/sys/net/core/somaxconn


La mention "uniquement si floodmon ne tourne pas" c'est juste parceque floodmon s'occupe déjà de le régler tout seul Je ne connaissais absolument pas cette limitation et il s'avère que j'avais atteint cette limite sur mes serveurs, même en fonction normal, sans attaque !

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

flush | Jean-Philippe
Modérateur

Photo de flush

Inscrit le : 09/05/2005

# Le 23/09/2009 à 21:11

Très intéressant,

Merci Rano, je vais aller voir demain si je ne suis pas limit un peu de côté là ^^

@+ Jean-Philippe

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 23/09/2009 à 21:19

D'ailleurs Varnish indique 262144 comme valeur par défaut pour le somaxconn.

edit : wiki de VarnishOuvrir dans une nouvelle fenetre

(Message édité le 24-09-2009 à 09h02 par Bool)

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Akarys | Thierry
Membre

Photo de Akarys

Inscrit le : 19/01/2008

# Le 24/09/2009 à 06:48

Bonjour,
Je viens de faire un mini sondage autour de moi; nous utilisons tous la Debian "nue" d'OVH. Nous avons tous :

$ cat /proc/sys/net/core/somaxconn
128

C'est bien la valeur par défaut indiquée par Rano. A priori trop faible donc. Je vais l'augmenter et l'instrumenter pour voir...

(Message édité le 24-09-2009 à 07h00 par Akarys)

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 24/09/2009 à 08:22

Ils doivent bosser grave tes serveurs Rano

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 24/09/2009 à 10:22

Ouais, en heure de pointe ils ne glandent pas beaucoup

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 04/10/2009 à 17:17

Rah merci Rano J'avais un problème de ce genre que je n'arrivais pas à résoudre, et en lisant la Doc de floodmon dans le doute je me suis rendu compte qu'NginX avait le même problème : il ne suis la recommandation somaxconn du système que sous FreeBSD, dans les autres cas il faut la spécifier à la main. C'est maintenant chose faite, et c'est tout bon.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

flush | Jean-Philippe
Modérateur

Photo de flush

Inscrit le : 09/05/2005

# Le 04/10/2009 à 19:26

Je suis bien content d'être un client à Bool ^^ j'aurais jamais trouvé le problème !!!

@+ Jean-Philippe

Rano | Jean
Modérateur

Photo de Rano

Inscrit le : 13/04/2005

# Le 05/10/2009 à 21:15

Ouais je ne comprends pas que je ne sois jamais tombé sur une telle info avant. Ça semble pourtant être important comme réglage quand on commence a avoir un peu de trafic.

Chambres d'hote tavelOuvrir dans une nouvelle fenetre
Séjours en provenceOuvrir dans une nouvelle fenetre
Forum mariageOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 4:09:32 | Généré en 7.33ms | Contacts | Mentions légales |