Welches Apache-Paket eignet sich am besten für die Anwendung mod_wsgi Django?

7

In Ubuntu (und Debian und anderen Distributionen) gibt es einige Apache-Pakete (mpm-event, mpm-prefork, mpm-worker). Welches ist am besten geeignet, um die Anwendung Django mod_wsgi auf einem einzelnen CPU-Server zu hosten? Welches Paket ist die beste Wahl für OpenVZ-Container?

miHost
quelle

Antworten:

3

Das Arbeiter-MPM wäre Ihre beste Wahl. Es ist kompatibel mit mod_wsgi . Das Ereignis MPM bietet möglicherweise eine höhere Leistung, wird jedoch weitaus seltener verwendet, und jede Leistungsverbesserung ist minimal - daher werde ich es nicht empfehlen. Das Worker-MPM verarbeitet jede Anforderung in einem separaten Thread, wodurch es für die Verwendung auf einem VPS viel besser geeignet ist als das herkömmliche Prefork-Modell, bei dem für jede Verbindung ein ganzer Prozess verwendet wird.

Alex J.
quelle
1
mpm_event ist für Django in Apache 2.3 eine viel bessere Option geworden, und der Leistungsunterschied zwischen mpm_worker und mpm_event ist viel größer als in dieser Antwort angegeben. Jede App ist anders, Benchmark!
Robbyt
abgeordnet für das mpm_event. "weitaus seltener verwendet" ist, weil der obige Kommentar aus dem Jahr 2009 stammt und alle MPMs mit dem Daemon-Modus mod_wsgi kompatibel sind.
Zzzeek
12

Wenn Sie den Daemon-Modus mod_wsgi verwenden, spielt es keine Rolle, welchen Apache-MPM Sie verwenden, obwohl empfohlen wird, für UNIX-Systeme Worker-MPM zu verwenden, es sei denn, Sie müssen auch PHP-Anwendungen mit mod_php hosten, da einige PHP-Erweiterungen nicht threadsicher sind .

Der Vorschlag, dass Sie Worker-MPM benötigen, um den Daemon-Modus mod_wsgi verwenden zu können, ist falsch. Wichtig ist, ob die zugrunde liegende Apache Runtime Library (APR) mit Threading-Funktionen erstellt wurde. Dies ist normalerweise immer der Fall, auch wenn das Prefork-MPM in Apache verwendet wird. Die einzigen Systeme, in die keine Threading-Funktionen in APR integriert sind, sind ältere BSD-basierte Systeme, bei denen das Threading etwas unterbrochen war.

Graham Dumpleton
quelle
Da ich immer noch mehr über das Thema der verschiedenen MPMs und die Modi von mod_wsgi lerne, war diese Antwort für mich sehr hilfreich, insbesondere der erste Satz.
Mbaechtold
0

Worker ist erforderlich, wenn Sie mod-wsgi im Daemon-Modus verwenden (was ich bevorzuge, da auf meinem Apache-Server andere Websites ausgeführt werden).

Wenn Sie mod-wsgi im eingebetteten Modus verwenden, ist beides in Ordnung.

Es ist in den Dokumenten: http://code.google.com/p/modwsgi/

Reich
quelle