Comment ajuster nginx keepalive_timeout?

12

J'utilise nginx avec php-fpm pour héberger un site basé sur mysql occupé. Actuellement, j'utilise keepalive_timeout = 5, mais je n'ai aucune idée claire de la façon de l'ajuster de manière optimale. Alors appréciez vos conseils.

alfish
la source

Réponses:

10

De quoi avez-vous besoin pour l'ajuster, ou plutôt: voyez-vous des problèmes à ce qu'il définisse comment vous faites?

Il n'y a pas de bonne réponse universelle; si la plupart des navigateurs clients sont capables de charger toutes les ressources sur une page en 5 secondes, alors 5 secondes sont très bien, mais cela dépend complètement des besoins de votre application - si votre serveur nginx servait de proxy inverse pour Exchange ActiveSync, par exemple, vous voudriez qu'il soit lancé jusqu'à une demi-heure.

Shane Madden
la source
Eh bien, j'essaie de minimiser la charge du serveur (qui est assez élevée aux heures de sélection), et je suppose que l'optimisation de keepalive_timeout peut contribuer partiellement à cet objectif. En dehors de cela, c'est juste une curiosité saine :)
alfish
1
Bien sûr - donc, à peu près "aussi bas que possible sans donner le coup d'envoi à la plupart des clients avant de charger la page" - donc si vos pages se chargent en moins d'une seconde pour la plupart de vos clients, un délai d'expiration de 1 seconde suffira. Mais, à moins que votre délai d'attente ne soit beaucoup, bien supérieur à 5 secondes, il est peu probable que ce soit une cause majeure de charge du serveur.
Shane Madden
Voilà le point délicat. Comment puis-je déterminer le temps de chargement des pages, compte tenu de la différence de temps de chargement des pages (certaines sont plus lourdes que d'autres), des vitesses de connexion des visiteurs, etc.
alfish
Il suffit de le faire. Il est peu probable que quelques secondes d'une manière ou d'une autre fassent une différence substantielle de charge, alors n'hésitez pas à estimer élevé - mais là encore, une nouvelle construction d'une connexion TCP (même avec une négociation SSL, le cas échéant) pour un client à chargement lent ne va pas faire une grande différence dans leur vitesse de chargement globale.
Shane Madden
1
@ShaneMadden, que 5 secondes ne sont pas la durée de vie de la connexion, mais seulement un délai pendant lequel le serveur attend jusqu'à une autre demande keepalive_requests. Il n'est donc pas important de savoir combien de temps il faut pour charger la page entière, juste pour le HTML jusqu'à ce que le navigateur commence à récupérer les images / css ... la connexion est maintenue ouverte est presquekeepalive_timeout*keepalive_requests
Marki555