J'essaie d'envelopper ma tête comment les options haproxy
timeout http-request <timeout>
timeout http-keep-alive <timeout>
timeout server <timeout>
intéragir ensemble. Je suis un site Web Apache sur deux serveurs d'applications vivant derrière un équilibreur de charge haproxy. À l'heure actuelle, je n'ai pas de maintien en vie, mais j'essaye de l'activer, car je pense que cela aiderait à optimiser le site. Mon objectif était d'activer la connexion à la connexion entre le navigateur et l'haproxy, mais désactivez-vous entre Haproxy et Apache. J'ai accompli cela avec
option http-server-close
Maintenant, je cherche à mettre en place les délais d'attente continue. J'ai étudié le Haproxy manuel pour l'option Timeout HTTP-Demander, l'option Timeout HTTP-Keep-Alive et l'option Server Timeout. Si je comprends bien le manuel, le délai d'attente HTTP-Keep-Alive est le moment de garder la connexion ouverte entre les nouvelles demandes et le délai d'attente HTTP-Demander est l'heure d'attendre les en-têtes de la réponse avant de fermer la connexion. Mais ce que je ne peux pas sembler comprendre, c'est quel délai d'attente dicte. Je tiens à dire que Timeout Server est le moment d'attendre la réponse complète, mais quelqu'un peut-il confirmer cela? Si j'ai raison que le timeout Server est le moment d'attendre la réponse complète, alors je suis correct que cela ne devrait pas avoir d'incidence sur les paramètres de délai d'attente de conservation?
Voici ma configuration haproxy que je travaille sur la modification:
global
maxconn 4096
pidfile /var/run/haproxy.pid
daemon
defaults
mode http
retries 3
option redispatch
maxconn 5000
timeout connect 5000
timeout client 300000
timeout server 300000
listen HTTP *:80
mode http
cookie HTTP insert nocache
balance roundrobin
#option httpclose # I just commented this out in favor of http-server-close
option http-server-close
timeout http-keep-alive 500 # from the haproxy manual suggestion of "tens to hundreds of ms"
timeout http-request 5000
option forwardfor
stats enable
stats uri /my-lb-status
stats auth myLbStatus:123456
reqadd X-Forwarded-Proto:\ http
option httpchk GET /robots.txt HTTP/1.0
server SERVER_A 1.2.3.4:80 cookie app_01 check
server maintenance 127.0.0.1:8080 backup
En fin de compte, mon objectif est de pouvoir activer la maintenance entre le navigateur et Haproxy avec l'obligation de pouvoir exécuter un rapport pouvant prendre 2-3 minutes pour exécuter sur les serveurs d'applications.
Juste pour clarifier un peu. J'espère que cela répond également à vos questions.
Timeout HTTP-Demande
Le temps est venu du premier octet client reçu, jusqu'à ce que le dernier octet soit envoyé au client (indépendamment de la conservation). Donc, si votre backend est trop lent ou si le client envoie sa demande trop lente, toute la communication peut prendre plus de temps que cela, et la demande est supprimée (et un délai d'attente envoyé au client).
délai d'attente HTTP-Keep-Alive
Le temps de conserver une connexion ouverte entre Haproxy et le client (après l'envoi de la réponse du client). Cela n'a rien à voir avec le temps de réponse du backend. Cela n'a rien à voir avec la longueur d'une seule demande (c'est-à-dire le délai d'expiration HTTP-Demand). Cela permet des réponses plus rapides si l'utilisateur demande plusieurs ressources (I.e. HTML, IMG et JS). Avec GARDER VIVANT, les demandes simples peuvent utiliser la même connexion TCP. De cette façon, la durée de charge d'une page Web complète est réduite.
Server Timeout
C'est le délai d'attente pour vos serveurs de backend. Une fois atteint, Haproxy répond avec 504 (timeout de la passerelle). Cela n'a également rien à voir avec GARDER VIVIVE, car il s'agit uniquement de la connexion entre le proxy et le backend.