Frage

Ich gründe einen Apache2 Webserver laufen mehrere Ruby on Rails Web-Anwendungen mit Phusion Passagier auf. Ich weiß, dass Passagier laicht Ruby-Prozesse für Anfragen Handhabung. Ich habe folgende Fragen:

  • Wenn mehr als eine Anforderung zur gleichen Zeit behandelt werden muss, wird Passagier Laich mehr Prozesse oder mehr (Rubin) Fäden? Wie konfiguriere ich es so ist es immer Single-Threaded-Prozesse laicht?
  • Wenn ich zwei Rails-Anwendungen haben, sich vorstellen, dass ein Antrag auf App A geht 1 zu verarbeiten, dann später Anfrage für App B ankommt. Ist es möglich, dass Verfahren 1 als auch diese Anforderung bearbeiten? Wann und wie ist das möglich? Mit anderen Worten, ist ein Prozess mehr Rails erlaubt Anwendungen bedienen zu können Anträge auf?
  • Ich habe das gleiche Rails-Anwendung in mehreren URLs exportiert und mehrere virtuelle Hosts (wie http: // und https: //). Wird der gleiche Prozess verschiedene virtuelle Hosts dienen können? (Die Antwort auf diese scheint ja zu sein, habe ich habe eine globale Variable in eine Anfrage an virtueller Host A zu beantworten, und ich war in der Lage, den Wert in virtuellen Host B abgerufen werden.)
War es hilfreich?

Lösung

Generell Passagier laicht neue Verfahren durch eine ApplicationSpawner gabeln, die den Rahmen und den Anwendungscode in den Speicher vorinstalliert, oder ein FrameworkSpawner, die nur den Framework-Code hat.

Passagier-, soweit ich weiß, befasst sich nicht in Threads. Stattdessen kann, wie sich die Last erhöht auf eine Anwendung, wird es, dass die Anwendung des ApplicationSpawner Gabel und eine andere Instanz initialisieren. Wenn Last abnimmt, werden eine oder mehrere Anwendungsinstanzen abgetötet.

Wenn Passagier in einer bestimmten Art und Weise konfiguriert ist (ich glaube, durch die „intelligente“ Spawn-Methode der Wahl), wird es eine FrameworkSpawner schaffen, die die Schiene Code lädt, aber kein Anwendungscode, der dann gegabelt werden kann laden und Anwendung Verwendung dieser Version von Rails.

So Ihre Fragen zu beantworten:

  • Es sie nacheinander dienen wird, dann weitere Prozesse laichen, wenn sie die Last entscheidet hoch genug ist.

  • Nein. Ein Prozess kann nur gehören zu einer einzigen Rails-Anwendung.

  • Ich bin ein bisschen skizzenhaft auf diesen einen, aber Ihr Experiment macht Sinn. Passagier sollte klug genug sein, um herauszufinden, dass, obwohl es aus verschiedenen Orten in der Server-Konfiguration läuft, Sie sprechen die gleiche Anwendung. Es ist wahrscheinlich auf der Grundlage der Dateisystem-Pfad der Anwendung.

EDIT: Ich ging hin und las auf diesen ein wenig. Es stellte sich heraus, war ich meistens recht, aber die technischen Details ein bisschen weg waren. Sehen Sie die Passagier Dokumentation

Andere Tipps

Yup, Burke ist richtig. Im Fall der dritten Frage, erkennt Phusion Passagier Anwendungen durch ihre Anwendung Root-Pfad. Also selbst wenn Sie zwei virtuelle Hosts haben, wenn sie beide auf die gleiche DocumentRoot dann Phusion Passagier wird denken, dass sie die gleiche Anwendung sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top