gunicorn + nginx vs mod_wsgi apache2

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
seishin
User
Beiträge: 87
Registriert: Montag 19. Dezember 2011, 16:42

Sonntag 8. September 2013, 15:05

Ja wie der Titel schon sagt...
Würde mich sehr über Erfahrungsberichte (Vorteile/Nachteile) freuen und natürlich eure persönliche Geschmacksrichtung.

Da ich längere Zeit auf mod_wsgi und apache2 unterwegs war, vor kurzem über gunicorn und nginx stolperte im Zusammenhang mit Django... und das Testhalber aufgesetzt habe, es sich auch geschmeidiger anfühlt...

Wollte ich mal in die Runde fragen. :-)


Gruß
sei
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 8. September 2013, 17:18

Wie viel Last hast du denn?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
kbr
User
Beiträge: 1145
Registriert: Mittwoch 15. Oktober 2008, 09:27

Sonntag 8. September 2013, 18:09

Es sind beides stabile Kombinationen, wobei Nginx/gunicorn die weniger speicherhungrige ist. Zudem bist Du nicht auf eine Python-Version festgelegt und kannst für verschiedene Projekte auch serverseitig virtualenv nutzen. Dieser Vorteil entfällt, sobald Dein Projekt den Server komplett auslastet. In diesem Fall wird die Django-Anwendung (und ggf. die db-Anbindung) zum Engpass und es stellt sich die Frage, ob Du lieber Apache/mod_wsgi oder Nginx/gunicorn skalierst. Ich würde letzteres bevorzugen.
seishin
User
Beiträge: 87
Registriert: Montag 19. Dezember 2011, 16:42

Sonntag 8. September 2013, 18:12

Meine derzeitigen Projekte verursachen nicht sehr viel Last.

Doch jenes an welchem ich derzeit Arbeit wird vermute ich einiges an Last verursachen.

@kbr, vielen Dank! Deine Worte sind jene welche man auch aus dem englischen Raum findet. :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 8. September 2013, 20:16

kbr hat geschrieben:Zudem bist Du nicht auf eine Python-Version festgelegt und kannst für verschiedene Projekte auch serverseitig virtualenv nutzen. Dieser Vorteil entfällt, sobald Dein Projekt den Server komplett auslastet.
Verschiedene virtualenvs kannst du genauso auch mit mod_wsgi haben, so läuft das bei mir schon seit einiger Zeit.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
kbr
User
Beiträge: 1145
Registriert: Mittwoch 15. Oktober 2008, 09:27

Sonntag 8. September 2013, 22:38

Leonidas hat geschrieben:Verschiedene virtualenvs kannst du genauso auch mit mod_wsgi haben, so läuft das bei mir schon seit einiger Zeit.
Ah, schön — dann reduziert sich der Vorteil in dieser Hinsicht auf verschiedene Python-Versionen.
seishin
User
Beiträge: 87
Registriert: Montag 19. Dezember 2011, 16:42

Montag 9. September 2013, 17:11

Ich werde es wohl einfach mal ausprobieren.

Habe hier eine Django Bude gefunden, welche gunicorn & nginx benutzt: https://www.divio.ch


Vielen Dank schon mal! :-)
seishin
User
Beiträge: 87
Registriert: Montag 19. Dezember 2011, 16:42

Montag 28. Oktober 2013, 12:38

Nachtrag: Bin auf nginx/gunicorn umgestiegen.
Wieso so ganz genau kann ich noch nicht mal sagen. Ich würde weiterhin behaupten Geschmackssache.
Jedoch gefällt mir die direkte Unterstützung gunicorns von Django sehr sehr gut!
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Dienstag 29. Oktober 2013, 10:22

Fange gerade ein Projekt mit nginx + Gunicorn + Flask
Wollte ich nur mal in den Raum werfen :P
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Dienstag 29. Oktober 2013, 14:35

kbr hat geschrieben:Es sind beides stabile Kombinationen, wobei Nginx/gunicorn die weniger speicherhungrige ist.
Bitte nicht immer solche Unwahrheiten verbreiten; ein ordentlich konfigurierter Apache braucht weniger Speicher als Gunicorn :)
BlackJack

Dienstag 29. Oktober 2013, 15:00

Es ist ja auch die Frage wofür Speicher verbraucht wird. Ein Webserver der viel Speicher zum Cachen von statischen Inhalten verbraucht kann besser/schneller sein, als einer der um jeden Preis möglichst wenig Arbeitsspeicher belegen möchte.

Solche pauschalen Vergleiche bringen also unter Umständen nicht viel. Wie so oft bei solchen Fragen sollte man Entscheidungen aufgrund konkreter Anforderungen treffen und wenn mehrere Kombinationen diese Anforderungen grundsätzlich erfüllen entweder das nehmen was einem mehr zusagt wenn es schnell genug ist, oder unter möglichst realen Bedingungen *messen* was besser ist.

Was den Speicherverbrauch angeht kann ich mir vorstellen das bei einer komplexeren Webanwendung der Speicherbedarf der eigentlichen Webanwendung und/oder der Datenbank falls sie auf dem selben Rechner läuft, so gross wird, dass ein Unterschied bei den Webservern auch nicht mehr ins Gewicht fällt.
DasIch
User
Beiträge: 2540
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Dienstag 29. Oktober 2013, 15:51

apollo13 hat geschrieben:Bitte nicht immer solche Unwahrheiten verbreiten; ein ordentlich konfigurierter Apache braucht weniger Speicher als Gunicorn :)
Apache ist aber nunmal per default alles andere als ordentlich konfiguriert, zumindest im Bezug auf Python Web Anwendungen.

Insofern ist man mit nginx und gunicorn im Zweifel besser dabei, es sei den man kann einen Apache richtig konfigurieren oder hat Lust sich damit zu beschäftigen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 29. Oktober 2013, 19:36

Außerdem kann man in Apache mod_python verwenden, was viel besser ist als dieser WSGI-Quatsch :twisted: Ist auch total sinnlos dass man Python-Applikationen über ein gemeinsames Interface einbinden kann, war damals viel besser als man alles für CGI, FastCGI, SCGI, mod_python und SimpleHTTPServer via Reverse Proxy konfiguriert hat.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
kbr
User
Beiträge: 1145
Registriert: Mittwoch 15. Oktober 2008, 09:27

Mittwoch 30. Oktober 2013, 20:50

apollo13 hat geschrieben:Bitte nicht immer solche Unwahrheiten verbreiten; ein ordentlich konfigurierter Apache braucht weniger Speicher als Gunicorn :)
Da es nicht mein Anliegen ist Unwahrheiten zu verbreiten, habe ich Apache wahrscheinlich nie ordentlich konfiguriert (d.h. Module rausgeschmissen). Vermutlich ist meine Konfiguration von Nginx gegenwärtig auch nicht optimal :)
Antworten