Quand utiliser httpclose ou http-server-close dans haproxy
j'ai hérité d'un système où il y a des problèmes de performance dus à la latence du réseau. Nous utilisons CentOS 5.x, et haproxy 1,5 x
la raison est qu'il y a beaucoup de temps passé sur chaque requête API en raison du temps passé sur la "connexion initiale"
ignorer le reste du timing car ce n'est qu'un exemple pris sur le web, le reste du timing est correct de mon côté sauf pour "connexion initiale" où toutes les API les appels sont programmés autour de 150-250ms pour la "connexion initiale".
après avoir supprimé les paramètres "option httpclose" de haproxy, les performances se sont nettement améliorées puisque tout le temps d'attente depuis "la connexion initiale" est passé.
Après avoir parcouru quelques articles, j'ai trouvé celui-ci http://killtheradio.net/technology/haproxys-keep-alive-functionality-and-how-it-can-speed-up-your-site/
où il suggère de supprimer:
option httpclose
et remplacer par
timeout client 5000
option http-server-close
Donc mes questions sont:
- quand utiliser l'option httpclose?
- le serveur qui utilise haproxy est responsable de tous nos appels API Restful, y a-t-il d'autres considérations dont je dois être conscient après avoir supprimé la config "option httpclose"?
- dois-je utiliser "option serveur http proximité" et quels sont les impacts?
1 réponses
vous devriez en fait utiliser
option http-keep-alive
vous devez vous assurer que les limites de frontend sont suffisamment élevées (faites attention aux exigences de mémoire) pour qu'elles puissent accommoder l'augmentation du nombre de sessions actives, qui sera plus élevé en raison du fait que les connexions ne seront plus fermées après chaque demande.
la chose suivante est de s'assurer que vos supports d'arrière-plan restent en vie vers HAproxy, sinon le dessus est inutile et vous pouvez revenir à http-server-mode de fermeture.
selon le taux de vos demandes et le nombre de clients parallèles, vous devez ajuster timeout http-keep-alive
pour s'assurer que vous avez assez de fentes de connexion sur la frontend tout en conservant un bon pourcentage de réutilisation de connexion. Bonne valeur pour commencer est un quelques secondes.
httpclose
option ne doit être utilisée que si vous souhaitez fermer la connexion vers le serveur et le client, qui n'est presque jamais le cas, sauf si les clients sont cassé. Si vous avez un serveur qui ne peut pas faire face à beaucoup de demandes d'inactivité, vous pouvez utiliser http-server-close
option, mais tous les serveurs web, c'est bien.
cela aidera aussi avec la partie SSL car elle représente une partie importante de la phase de connexion (étant donné qu'elle n'aura pas besoin D'une poignée de main SSL pour chaque requête), mais vous pourriez vouloir examiner les performances du cache de session SSL et si vous avez plus d'un serveur HAproxy actif, le support RFC5077 (nécessite v1.6+).
https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#tune.ssl.cachesize https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#3.2-tune.ssl.lifetime