Est-ce mauvais d’utiliser la licorne sans nginx? Pourquoi?

J’ai lu que Licorne est rapide pour servir du contenu statique, ralentir les utilisateurs, faire des redirections.

Pourquoi vaut-il mieux nginx + unicorn vs unicorn en cours d’exécution, et mettre à l’échelle le nombre de travailleurs licornes si nécessaire?

Avez-vous des chiffres indiquant combien de temps nginx est rapide sur chacune de ces choses (redirection, proxy, diffusion de contenu statique)?

    Comme le prétend Heroku DevCenter , les employés de Licorne sont vulnérables aux clients lents .

    Chaque agent ne peut traiter qu’une seule demande et, si le client n’est pas prêt à accepter la réponse complète (également appelée “client lent”), l’agent Unicorn est bloqué pour envoyer la réponse et ne peut pas gérer la réponse suivante . Étant donné que chaque agent Unicorn utilise une quantité importante de mémoire vive ( encore une fois, voir Heroku , il prétend gérer 2 à 4 processus à 512 Mio RAM), vous ne pouvez pas compter sur le nombre d’employés, car application inutilisable en prétendant avoir des connexions lentes.

    Lorsque derrière nginx , Unicorn est capable de transférer la réponse entière dans le tampon de nginx et de passer immédiatement à la requête suivante.

    Cela dit, nginx avec un seul travailleur Unicorn est beaucoup plus fiable qu’un groupe de travailleurs Unicorn exposés directement.

    NB: pour les anciens utilisateurs de Rubis: si vous utilisez un ensemble de travailleurs Unicorn, envisagez de migrer au moins vers Ruby 2.0 pour réduire la consommation de RAM en partageant des données communes entre les processus fourchus ( ref ).