Gunicorn: Question : Que se passe-t-il si tous les travailleurs sont occupés et qu'une demande arrive ?

Créé le 28 janv. 2019  ·  3Commentaires  ·  Source: benoitc/gunicorn

Je soupçonne soit :

  • la demande se bloque jusqu'à ce qu'un travailleur soit libre, ou
  • la demande a échoué (par exemple, avec une réponse directe du délai d'expiration de la passerelle HTTP 504, ou une fermeture de connexion signalée comme un délai d'expiration de la passerelle HTTP 504 par un proxy en amont tel que Nginx)

(J'essaie de poster cette question sur la liste de diffusion Gunicorn, mais je n'ai pu trouver aucune instruction claire sur la façon de le faire directement. J'espère donc que créer un problème Github est la bonne voie.)

Question Discussion

Tous les 3 commentaires

C'est un bon endroit pour ça :) Vous pouvez déjà y trouver quelques informations : http://docs.gunicorn.org/en/stable/design.html

de toute façon ça dépendra. Avec Gunicorn derrière NGINX, même le travailleur de synchronisation est capable d'accepter plusieurs connexions. Il traitera N demandes simultanément (où N est le nombre de travailleurs) alors que vous pouvez en avoir beaucoup en attente dans le tampon nginx. La plupart du temps, cela suffit pour exécuter un très grand site Web avec plus de 10 000 connexions simultanées.

Pour les autres utilisations, vous avez les travailleurs asynchrones. Alors que NGINX ou tout proxy capable de mettre en mémoire tampon les connexions continuera à aider ces travailleurs, Gunicorn pourra gérer plus de connexions simultanées ou garder certaines connexions ouvertes pendant une longue période.

J'espère avoir répondu à votre question.

Pour répondre à propos de Gunicorn uniquement :

Le paramètre de backlog spécifie la profondeur du backlog d'écoute du système d'exploitation. Si le backlog est plein, la demande sera rejetée par le système d'exploitation et la passerelle obtiendra un échec de connexion en amont. Si le backlog n'est pas plein, la connexion sera ouverte par le système d'exploitation, mais ne sera pas gérée par Gunicorn tant qu'un travailleur de Gunicorn ne sera pas prêt à accepter la demande. La passerelle peut renvoyer un délai d'attente en amont si Gunicorn ne traite pas la demande rapidement.

Si vous constatez que vous avez beaucoup de délais d'attente en amont et que vous utilisez un proxy inverse devant Gunicorn, vous souhaiterez peut-être réduire le retard afin que votre proxy puisse basculer plus efficacement.

Merci les gens. Ces réponses sont utiles.

Cette page vous a été utile?
0 / 5 - 0 notes