2010-08-28 6 views
7

Il existe plusieurs façons de déployer des applications Pylons. - mandatement par apache ou nginx pour coller - Intégrer l'application avec mod_wsgi - en utilisant une nginx énervée + uwsgi combo - et probablement plus ...Quelle est la meilleure façon de déployer une application Pylons?

J'ai lu beaucoup de choses sur les différentes approches, mais en vain vraiment décider lequel choisir. Le proxy pour coller à travers nginx semble être la méthode la plus simple à configurer, mais est-ce efficace? Est-ce que coller ne serait pas plus lent que mod_wsgi ou uswgi? Si oui, l'augmentation de la performance en vaut-elle la peine?

Besoin de quelques experts pour me aider à choisir le meilleur compromis ... Je veux la simplicité, mais je dois décent (sinon pointe) la performance, et vous, Obiwan Kenobi, sont mon seul espoir;)

Répondre

1

La meilleure réponse est, ça dépend. Du point de vue de la simplicité pure, apache2/mod_wsgi est probablement le plus facile à gérer, car vous avez un plus grand bassin de personnes qui comprennent apache.

Du point de vue des performances, cela dépend.

Si votre application est très lourde et peu intensive en contenu statique (css, images), la passerelle entre le serveur web et les pylônes est plus susceptible de goulot d'étranglement et presque n'importe quel déploiement peut gérer cela.

La pâte est assez rapide. J'ai trouvé l'interface de nginx/uwsgi légèrement plus rapide que apache2/mod_wsgi. La performance des fichiers statiques et les besoins en mémoire de nginx favorisent également nginx.

Il y a quelques sites que j'ai rencontré qui parlent les deux:

tonylandis.com/python/deployment-howt-pylons-nginx-and-uwsgi/ cd34.com/blog/programming/ python/pylônes et-facebook-application layout/ code.google.com/p/modwsgi/wiki/IntegrationWithPylons

Les comparaisons que j'ai fait sont avec apache2/mpm-worker plutôt que mpm-prefork que je n'a pas besoin de mod_php5 dans ma configuration.

+0

Huh. La passerelle entre le serveur Web et Pylons ne serait pratiquement jamais le goulot d'étranglement. Le surcoût des mécanismes d'hébergement, à l'exception du CGI au moins, est si minime qu'en pratique pour un vrai système (pas un bonjour programme mondial) il y aura peu de différence entre les différents mécanismes d'hébergement. Au lieu de cela, le goulot d'étranglement sera l'application, les systèmes de rendu et les bases de données. Je ne suis pas sûr de ce que vous vouliez dire, mais il ne semble pas vraiment avoir raison. –

2

Ce que je voulais dire est que si l'application est plus dépendante cadre dépendant que du contenu statique, le facteur limitant serait le serveur Web -> framework et j'ai trouvé des différences négligeables dans les performances de nginx -> uwsgi -> pylons et apache2/mpm-worker -> mod_wsgi -> pylons car le facteur limitant est Pylons. Cela ne veut pas dire que Pylons est lent.

Quelle que soit la méthode de déploiement que j'ai utilisée avec repoze.who/what, j'ai trouvé qu'il était difficile de passer à 280 requêtes par seconde par cœur de processeur.

@mkucharz, En ce qui concerne ces résultats de performance, ces résultats ont trois ans et ne se rapprochent même pas des configurations qui existent aujourd'hui. Pylons 1.0 est environ 10% plus rapide que 0.9, flup est beaucoup plus mature, et cela ne teste pas uwsgi ou mod_wsgi. Il utilise également Mighty plutôt que Mako, indiquant également l'âge du test.

Les autres variables cachées incluent la version de Python. Dans certaines distributions, j'ai trouvé Python 2.5 un peu plus rapide que Python 2.6 en fonction de ce que fait l'application.

Avertissements:

  • Pylônes ne tarde pas.
  • Les différences de performance mod_wsgi et uwsgi sont négligeables dans les paramètres de production.
  • La performance des fichiers statiques de Nginx est meilleure que celle d'Apache.
  • Apache/mpm-worker est beaucoup plus rapide que mod-prefork si mod_php n'est pas nécessaire.
  • Presque tout déploiement que vous comprenez est probablement suffisant pour 99% des applications Web.
  • 99% des tests publiés ne testent pas correctement un environnement. Frapper une page 10000 fois n'est pas indicatif de la performance du monde réel.
  • Essayer de vous aider lorsque vous postez tard le soir ne fonctionne jamais. Je savais que quand je l'avais vu arriver sur tweetdeck, je n'aurais rien dit.
Questions connexes