Comment pouvez-vous configurer nginx pour l'empêcher de bloquer sur un service lent de back-up uwsgi?

Disons que j'ai une configuration nginx simple qui parle d'un backend uwsgi:

server { listn 9900 default_server; listn [::]:9900 default_server; location / { include uwsgi_params; uwsgi_pass unix:/tmp/service-foo.sock; } } 

Ce service dispose d'un certain sous-set d'URL ( /renderer/... ) qui sont toujours énormément lents, et sous une charge lourde, tout le site tombe en panne.

Ce que je veux, c'est de le replace par deux copys du backend, comme ceci:

 server { listn 9900 default_server; listn [::]:9900 default_server; location / { include uwsgi_params; uwsgi_pass unix:/tmp/service-foo.sock; } location ~ ^/renderer/[0-9]+/ { include uwsgi_params; uwsgi_pass unix:/tmp/service-renderer.sock; uwsgi_read_timeout 30s; uwsgi_send_timeout 30s; uwsgi_request_buffering on; } } 

… mes attentes naïves étaient que cela permettrait de résoudre le problème en permettant aux requests /renderer/... d'être servies lentement une à la fois alors que le rest du site restait réactif.

Cependant, cela n'a pas fonctionné.

Il semble que nginx serve les requêtes dans les deux endroits à partir du même process et, éventuellement, le server justs se trouve bloquant avec toutes les requêtes assises dans la deuxième instance de uwsgi, et la première instance de uwsgi ne fait rien du tout.

J'ai lu sur la directive nginx thread_pool qui ressemble presque exactement à ce que je veux (c.-à-d. Un pool de threads réservé spécifique pour l'location du rendu), mais cela ne semble pas être pris en charge par uwsgi, c'est juste pour le file io.

Y a-t-il un moyen de faire ce que je veux au niveau nginx?

  • Déploiement de l'application Flask avec nginx, uWSGI et virtualenv
  • Comment servir des files statiques pour plusieurs projets Django via nginx vers le même domaine
  • NGINX et OpenStack Horizon?
  • Nginx mauvaise passerelle (502) erreur sur django 500 erreurs (au lieu de montrer la page django 500) avec DEBUG = paramètre faux
  • L'utilisateur a un problème avec la vitesse de chargement du site
  • Mutual-site uWSGI config
  • Différentes versions de Python sous le même empereur uwsgi?
  • uwsgi_params not in nginx
  • Quelqu'un a-t-il utilisé uwsgi nginx et django pour un environnement à forte charge?
  • Corriger le nombre de process uWSGI?
  • uwsgi queue d'inondation de message socket?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.