2010-12-06 3 views

Antwort

7

Die meisten Ruby-Anwendungsserver werden nur einen einzigen Ruby-Prozess ausführen (und Ruby hat eine globale Interpretersperre, die Multithreading ziemlich sinnlos macht), was bedeutet, dass es nur eine Anfrage gleichzeitig bedienen kann. Um es gelinde auszudrücken, das wird Ihnen keine sehr gute Leistung bringen.

Hier gibt es zwei Möglichkeiten: Entweder Sie führen mehrere Ruby-Anwendungsserver aus und legen einen Load-Balancer oder Reverse-Proxy davor, z. Nginx oder Apache vor einem Paket von Mongrels oder Thin-Servern (die Anzahl der Prozesse, die Sie ausführen, spiegelt die Anzahl der Anforderungen wider, die Sie parallel verarbeiten können). Oder Sie führen Passenger aus, ein Apache- oder Nginx-Modul, das einen Pool von Anwendungen verwaltet, die dynamisch wachsen und bei Änderungen der Auslastung verkleinert werden können. Die erste Option bietet Ihnen mehr Konfigurationsoptionen, aber die zweite Option ist einfacher zu verwalten. Welches du willst, hängt von deinem Anwendungsfall ab.

Es gibt natürlich auch andere Lösungen, aber sie sind für spezifischere Anwendungsfälle. Sie können zum Beispiel eine sehr performante Anwendung schreiben und sie mit Thin bereitstellen - aber Sie müssen eine ereignisgesteuerte Anwendung schreiben. Sie können keine Rails-App bereitstellen und dieselbe Leistung erwarten.

2

bereitstellen Sie können technisch, aber Sie normalerweise nicht wollen, denn das wird ein gutes Stück Overhead auferlegen, wenn statische Dateien wie CSS oder Bilder dienen.

3

Vor Phusion Passenger erlaubt Rails Hosting mit Apache und Nginx, die Bereitstellung einer Rails-App war unheimlich und schwierig. Apache ist ein sehr ausgereifter Webserver, der leicht skalierbar und konfigurierbar ist, um viele Bedürfnisse zu erfüllen. (nginx ist nicht so ausgereift, aber sehr effizient, auch sehr konfigurierbar und eine großartige Alternative zu Apache für das Hosten von Schienen.) Wirrick und Mongrel sind großartig für die Entwicklung, aber wenn Sie kein Experte sind, ist es schwierig, sie für den Produktionseinsatz einzurichten .

1

Es gibt eine Reihe von Möglichkeiten, wie Sie eine Rails-App implementieren können, ohne Apache einzubeziehen. Apache ist jedoch der beliebteste Server in der Umgebung, der ausgereifteste Server und der stabilste und skalierbarste Server. WEBrick und Mongrel haben beide ihre eigenen Vorzüge, aber Apache ist nur die Standardannahme für Webserver und der Pfad des geringsten Widerstandes in den meisten Fällen.

Verwandte Themen