Was macht die Option --master tatsächlich in uwsgi?

9

Während die uwsgi-Dokumentation für jemanden, der bereits mit der Serververwaltung vertraut ist, vielleicht in Ordnung ist, ist sie für jemanden, der versucht, sie zu lernen, definitiv nicht so hilfreich. Ich hoffe, jemand kann bei den folgenden Fragen helfen.

  1. Ich habe gelesen, dass es Prozesse ordnungsgemäß schließen / neu laden kann. Aber was heißt das? Und was ist die Alternative zum würdevollen Schließen?

  2. Wann können diese Prozesse elegant / hässlich abgeschlossen werden? Ist es, wenn ein Prozess abstürzt? Oder wenn ich uwsgi schließen möchte, z. B. durch Drücken von Strg + c? Oder in einem anderen Fall? Kann ich diese Anmut testen, z. B. etwas zum Absturz bringen / schließen und dann das Ergebnis mit und ohne Master sehen?

  3. Tut es etwas anderes, als Prozesse ordnungsgemäß schließen zu lassen?

  4. Da die Aktivierung des Master-Prozesses optional ist, muss es Fälle geben, in denen die Verwendung nicht vorteilhaft ist. Was sind diese Fälle?

Mads Skjern
quelle

Antworten:

9

Ich stimme Ihnen zu, dass Uwsgi-Dokumente ziemlich gut sind.

Jetzt:

1) Dies bedeutet, dass der uwsgi-Server seinen Master-Prozess ordnungsgemäß herunterfährt / neu startet / neu lädt und seine Mitarbeiter ordnungsgemäß ein 'SIGHUP'-Signal senden, sodass die Prozesse auf dieses Signal reagieren können: "Puffer leeren, alle hergestellten Verbindungen / Sockets schließen, etc "(--reload) Option

2) Eine Alternative zu "elegant" wäre das Herunterfahren / Neuladen der uwsgi-Anwendung, wie Sie "schmutzig" gesagt haben. Dies bedeutet, dass ein Master-Prozess und das SIGTERM-Signal seiner Mitarbeiter gesendet werden, wodurch alle Mitarbeiter und der Master-Prozess (--die-on-term) brutal neu geladen werden. Es gibt auch '--stop', was SIGINT ist, das tatsächlich Ihren gesamten uWsgi-Stack töten würde, und das ist 'Ihr Tastatur-Interrupt-Ctl + C-Verhalten ".

3) Sie können mit Prozessen mit diesen Optionen herumspielen und sie entweder ordnungsgemäß oder brutal herunterfahren, aber das Verhalten ist allgemein bekannt. Das brutale Herunterfahren von Anwendungen / Abstürzen ist nicht gut, da der Abschluss von Festplatten-E / A-Vorgängen und das Zwischenspeichern von Inhalten nicht möglich sind abgestanden, Staaten verlieren usw.

4) Ja, manchmal möchten Sie keinen uwsgi-Master-Prozess: Aus Dokumenten:

"Als Teil der Prozessverwaltungsfunktionen von uWSGI kann ein Master-Prozess aktiviert werden, um Worker-Prozesse besser zu verwalten. Wenn dies aktiviert ist, wird die WSGI-Skriptdatei oder das WSGI-Modul in den übergeordneten Master-Prozess vorinstalliert. Worker-Prozesse werden dann aus diesem Master-Prozess herausgabelt Dies kann zu Problemen führen, wenn das WSGI-Skript oder -Modul beim Laden einen Hintergrundthread erstellt, der in jedem Arbeitsprozess ausgeführt werden soll, da dieser Hintergrundthread beendet wird, wenn der Arbeitsprozess gegabelt wird. "

Hoffe das beantwortet deine Frage.

Danila Ladner
quelle