2010-08-28 18 views
7

Es gibt viele Möglichkeiten, Pylons-Apps bereitzustellen. - Proxying durch Apache oder nginx einzufügen - Einbetten von der App mit mod_wsgi - mit etwas nervös nginx + uwsgi Combo - und wahrscheinlich mehr ...Was ist der beste Weg, um eine Pylons-App bereitzustellen?

ich viel über die verschiedenen Ansätze gelesen habe aber nicht zu wirklich entscheiden, welche man wählt.

Proxying zum Einfügen über Nginx scheint die einfachste Methode zum Einrichten zu sein, aber ist es effizient? Wäre das Einfügen nicht langsamer als mod_wsgi oder uswgi? Wenn ja, lohnt sich die Leistungssteigerung?

einige Experten brauchen mir den besten Kompromiss zu helfen wählen ... ich Einfachheit wollen, aber ich brauche ordentliche Leistung (wenn nicht Schneide), und Sie, Obiwan Kenobi, sind meine einzige Hoffnung;)

Antwort

1

Die beste Antwort ist, es kommt darauf an.

Vom einfachen Standpunkt der Einfachheit ist apache2/mod_wsgi wahrscheinlich am einfachsten zu verwalten, da Sie einen viel größeren Pool von Leuten haben, die Apache verstehen.

Vom Leistungsstandpunkt hängt es ab.

Wenn Ihre Anwendung sehr Framework-schwer und nicht sehr statischen Inhalt (CSS, Bilder) intensiv ist, ist das Gateway zwischen dem Webserver und Pylonen eher Ihr Engpass und fast jede Bereitstellung kann damit umgehen.

Paste ist ziemlich schnell. Ich fand die Benutzeroberfläche von nginx/uwsgi etwas schneller als apache2/mod_wsgi. Nginx's statische Datei-Performance und Speicheranforderungen sind ebenfalls für nginx geeignet.

Es gibt ein paar Seiten, die ich über dieses Gespräch gekommen sind, über beide:

tonylandis.com/python/deployment-howt-pylons-nginx-and-uwsgi/ cd34.com/blog/programming/ python/Pylonen-and-facebook-application-Layout/ code.google.com/p/modwsgi/wiki/IntegrationWithPylons

die Vergleiche, die ich gemacht habe, sind mit apache2/mpm-worker statt mpm-prefork als ich Ich brauchte mod_php5 nicht in meinem Setup.

+0

Huh. Das Gateway zwischen Webserver und Pylonen wäre praktisch nie der Flaschenhals. Der Overhead von Hosting-Mechanismen, zumindest für CGI, ist so minimal, dass es in der Praxis für ein reales System (kein Hello-World-Programm) nur einen kleinen Unterschied zwischen den verschiedenen Hosting-Mechanismen gibt. Stattdessen wird der Engpass die Anwendung, Rendering-Systeme und Datenbanken sein. Ich bin mir nicht sicher, was Sie meinen wollten, aber es klingt nicht wirklich richtig. –

2

Was ich sagen wollte, ist, dass, wenn die Anwendung mehr Rahmen abhängig als statische Inhalte abhängig ist, würde der limitierende Faktor der Webserver sein -> Rahmen und ich habe vernachlässigbare Unterschiede in der Leistung von nginx gefunden -> uwsgi -> Pylonen und apache2/mpm-worker -> mod_wsgi -> Pylonen als begrenzender Faktor ist Pylons. Das soll nicht heißen, dass Pylons langsam ist.

Egal, welche Deployment-Methode ich mit repoze.who/was verwendet habe, ich fand es schwierig, über 280 Anfragen pro Sekunde pro CPU-Kern zu skalieren.

@mkucharz, Für diese Leistungsergebnisse sind diese Ergebnisse drei Jahre alt und kommen den Konfigurationen, die heute existieren, nicht einmal nahe. Pylons 1.0 ist ungefähr 10% schneller als 0.9, Flup ist viel reifer, und das testet nicht uwsgi oder mod_wsgi. Es verwendet auch Mighty statt Mako, was ebenfalls auf das Alter des Tests hinweist.

Die anderen versteckten Variablen enthalten die Version von Python. In einigen Distributionen habe ich festgestellt, dass Python 2.5 etwas schneller ist als Python 2.6, je nachdem, was die Anwendung tut.

Impressum:

  • Pylons ist nicht langsam.
  • mod_wsgi und uwsgi Leistungsunterschiede sind in Produktionseinstellungen vernachlässigbar.
  • Die statische Dateileistung von Nginx ist besser als Apache.
  • Apache/mpm-worker ist viel schneller als mod-prefork, wenn mod_php nicht benötigt wird.
  • Fast jede Implementierung, die Sie verstehen, ist wahrscheinlich genug für 99% der Webapps da draußen.
  • 99% der veröffentlichten Benchmarks testen eine Umgebung nicht ordnungsgemäß. Eine Seite 10000 Mal zu treffen, ist kein Indikator für die Leistung der realen Welt.
  • Der Versuch, hilfreich zu sein, wenn spät in der Nacht gepostet wird, funktioniert nie. Ich wusste, wenn ich das auf Twitter sehen würde, hätte ich einfach nichts sagen sollen.
Verwandte Themen