Welche der beiden ist eine bessere Option neben der Anwendung "neuste Schienen"? Mischling, Thin, WEBrick und Passenger

8

Ich habe herumgespielt und andere Optionen für den WEBrick-Server von Rails evaluiert und Thin war das schmerzloseste und sauberste Ding, das sehr gut funktioniert hat!

Welche dieser Mongrel, Thin, WEBrick und Passenger würdest du empfehlen und warum? Gibt es irgendwelche Skalierbarkeitsvorteile (clusterfreundlich oder Konfigurationen, die mit irgendeiner Art von Skalierung umgehen können), die mit irgendeinem dieser Server geliefert werden. Oder sollte die Skalierbarkeit sogar ein Parameter sein, während sie bewertet werden?

    
brucewayne 27.10.2012, 05:24
quelle

3 Antworten

9

Dipak hat bereits die Hälfte Ihrer Frage beantwortet, aber lassen Sie mich etwas näher erläutern. (Ich bin einer der Autoren von Phusion Passenger.)

Wenn es um die Skalierbarkeit geht, gibt es keinen großen Unterschied. Sie arbeiten alle sehr ähnlich in der Produktion, sie skalieren alle auf die gleiche Weise und alle Probleme, denen Sie begegnen, werden höchstwahrscheinlich von Ihrer App oder von Rails verursacht. Tja, außer für WEBrick, das du eigentlich nicht in der Produktion verwenden solltest. Sie können einen Unterschied in Hallo Welt Benchmarks sehen, aber das wird alles sein. In der Produktion wird die meiste Zeit in der App verbracht, so dass kleine Geschwindigkeitsunterschiede, die in Hello World Benchmarks sichtbar sind, komplett unsichtbar werden.

Es gibt jedoch einige Feinheiten, die Sie beachten sollten.

  • Phusion Passenger bietet eine Funktion namens globale Warteschlangen an. Es löst ein spezifisches Problem, im Handbuch ausführlich erklärt . Standardmäßig werden Nginx- und Apache-Proxys Round-Robin-Anfragen entgegengenommen, so dass sie von diesem Problem betroffen sind, während dies bei Phusion Passener nicht der Fall ist. Es gibt Möglichkeiten, dies zu umgehen, wenn Sie Phusion Passenger nicht verwenden, aber sie erfordern eine spezielle Konfiguration oder die Installation zusätzlicher Webserver-Module.
  • Je nach Art Ihrer Anwendung ist das E / A-Modell möglicherweise wichtig oder nicht wichtig. Mischling, Thin, Unicorn, sie sind alle Multi-Prozess Single-Threaded. Dies funktioniert hervorragend für traditionelle Web-Apps, die in der lokalen Datenbank nach Inhalten suchen und etwas rendern, aber sie sind für Apps, die viele HTTP-API-Aufrufe durchführen oder auf I / O viel warten müssen. Warum Rails 4 Live Streaming ist eine große Sache erklärt das im Detail.

    Phusion Passenger ist auch Multi-Prozess Single-Threading, aber Phusion Passenger Enterprise unterstützt Multithreading. Phusion Passenger Enterprise ist eine kommerzielle Variante des Open-Source-Phusion-Passagiers mit einer Vielzahl von Funktionen, die für große Produktionsumgebungen geeignet sind.

  • In großen Produktionsumgebungen werden einige Merkmale wichtig, z. Rolling-Neustarts, kein Fehler bei einer fehlgeschlagenen Bereitstellung, etc. Mongrel, Thin, Unicorn, Phusion Passenger, sie alle stellen diese Features in gewissem Maße zur Verfügung, aber einige erfordern mehr Verwaltungsaufwand als andere. Um beispielsweise Rolling-Neustarts in Mongrel und Thin zu implementieren, benötigen Sie eine Vielzahl von Schritten in Ihren Bereitstellungsskripts. Unicorn erfordert nicht so viele Schritte, aber immer noch signifikant. Hier glänzt Phusion Passenger Enterprise: Es nutzt all diese Funktionen und verwandelt sie in eine einzige Konfigurationsoption. Schalten Sie die Option ein und die Software kümmert sich um den Rest.

Wähle also die Option, die für dein Szenario am besten ist.

    
Hongli 31.10.2012, 08:41
quelle
1

Am einfachsten ist es für die Produktion, Apache und mod_rails (Passagier) einzurichten. Wenn Sie die neue Hitze verwenden möchten, können Sie nginx und Passagiere einen Wirbel geben.

Für die Entwicklung ist Mongrel normalerweise am einfachsten zu arbeiten. Die meisten Windows-IDEs (RadRails, Netbeans) geben Ihnen die Wahl, Webrick oder Mongrel für die Entwicklungsarbeit zu verwenden und Sie können die Server von der IDE selbst steuern.

Aktualisieren

Vier Optionen

Es gibt wirklich vier Möglichkeiten, naja, plus WEBrick, aber das wäre eine ungewöhnliche Wahl für einen Produktionsserver. Etwa in der Reihenfolge der zunehmenden Komplexität ...

nginx + Mischling nginx + Passagier Apache + Mischling Apache + Passagier (Es gibt Phusion Passenger Standalone, aber das ist wirklich ein Nginx + Passagier zusammen kompiliert, also ich zähle es nicht, obwohl es eine gute Option für einige Leute sein könnte.)

Eine größere Site kann dann spezielle Schicht-7-Hardware (NetScaler, F5, ...) vor den Servern hinzufügen.

    
Dipak Panchal 27.10.2012 05:28
quelle
0

Thin ist so einfach wie ein Edelstein "dünn" für Entwicklung und Produktion

    
Nick Ginanto 29.10.2012 04:20
quelle