Gunicorn: Pergunta: O que acontece se todos os funcionários estiverem ocupados e uma solicitação chegar?

Criado em 28 jan. 2019  ·  3Comentários  ·  Fonte: benoitc/gunicorn

Eu suspeito que também:

  • a solicitação é bloqueada até que um trabalhador esteja livre ou
  • a solicitação falhou (por exemplo: com uma resposta direta de tempo limite do gateway HTTP 504 ou um fechamento de conexão relatado como um tempo limite do gateway HTTP 504 por um proxy upstream, como Nginx)

(Estou tentando postar esta pergunta na lista de e-mails do Gunicorn, mas não consegui encontrar instruções claras sobre como fazer isso diretamente. Portanto, espero que criar um problema no Github seja o caminho correto.)

Question Discussion

Todos 3 comentários

É um bom lugar para isso :) Você já pode encontrar algumas informações lá: http://docs.gunicorn.org/en/stable/design.html

de qualquer maneira, vai depender. Com o Gunicorn por trás do NGINX, até mesmo o trabalhador de sincronização é capaz de aceitar conexões múltiplas. Ele tratará N solicitações simultaneamente (onde N é o número de trabalhadores) enquanto você pode ter muitos esperando no buffer nginx. Acho que isso é suficiente para executar um site muito grande com mais de 10 mil conexões simultâneas.

Para outros usos, você tem os trabalhadores assíncronos. Embora o NGINX ou qualquer proxy capaz de armazenar as conexões continue a ajudar esses workers, o Gunicorn pode lidar com mais conexões simultâneas ou manter algumas conexões abertas por um longo tempo.

Espero ter respondido a sua pergunta.

Para responder apenas sobre Gunicorn:

A configuração do backlog especifica a profundidade do backlog de escuta do SO. Se o backlog estiver cheio, a solicitação será rejeitada pelo SO e o gateway terá uma falha de conexão upstream. Se o backlog não estiver cheio, a conexão será aberta pelo SO, mas não será tratada pelo Gunicorn até que um trabalhador Gunicorn esteja pronto para aceitar a solicitação. O gateway pode retornar um tempo limite upstream se o Gunicorn não lidar com a solicitação rapidamente.

Se você descobrir que tem muitos tempos limite de upstream e está executando com um proxy reverso na frente do Gunicorn, pode diminuir o backlog para que seu proxy possa fazer failover com mais eficiência.

Obrigado pessoal. Essas respostas ajudam.

Esta página foi útil?
0 / 5 - 0 avaliações