Passagier 5 schneidet bei benutzerdefinierten Benchmarks besser ab, da es über eine integrierte Caching-Schicht ("Turbo-Cache") verfügt, mit der vermieden werden kann, dass der Anwendungscode für identische Anfragen in kurzer Zeit ausgeführt wird. Dadurch wird Ihr tatsächlicher Anwendungscode nicht schneller ausgeführt. Diese Cache-Speicherschicht ist nur in bestimmten eingeschränkten Situationen aktiv und wird wahrscheinlich in der großen Mehrheit der tatsächlichen Fälle keinen großen Nutzen bringen. Wenn Sie nicht vorsichtig sind, kann die Caching-Ebene tatsächlich Ihre Anwendung brechen - ich demonstrierte mehrere Sicherheit vulnerabilities aufgrund der Caching-Ebene für Phusion während der 5-Beta-Phase (die behoben wurde, auf Kosten der Caching-Ebene, die nicht im Cache gespeichert werden kann) fast so viel). IMO, die Raptor / Passenger-5-Benchmarks sind irreführender Marketing-Fluff, und die Caching-Ebene existiert hauptsächlich, um Hello World-Benchmarks zu gewinnen, und Sie sollten sie wahrscheinlich einfach ignorieren.
Das heißt, Die Geschwindigkeit Ihres Anwendungsservers ist im Rahmen Ihrer gesamten Anwendungsleistung fast sicher unbedeutend . Passenger ist eine großartige Plattform, weil sie extrem benutzerfreundlich ist, gut dokumentiert ist, einen absolut fantastischen Installer hat und eine Menge lästigen Mist für Sie out of the box verarbeitet. Sie sollten Passenger verwenden, wenn Sie die Funktionalität benötigen, die es zur Verfügung stellt, und nicht mit einer Menge Konfigurationsmaterial herumspielen möchten. Wenn es nicht zu Ihrem Anwendungsfall passt, verwenden Sie etwas anderes.
Wenn Sie jede letzte Mikrosekunde interessiert, sollten Sie die Leistung Ihrer -Anwendung unter verschiedenen Webservern und verschiedenen Workloads messen und dann diejenige auswählen, die am besten funktioniert. Ansonsten verwende, was immer du am meisten magst und schalte dann um, sobald die Leistung zu einem tatsächlichen Problem wird.
Fußnote: Wenn Sie Passenger 5 verwenden, sollten Sie die Turbocaching-Sicherheitsänderungen
Ich habe meine App kürzlich von Puma auf Passenger migriert. Ich muss sagen, dass ich mich über diesen Schritt sehr freue, vor allem, weil ich ihn auf Heroku hosste.
Seit ich auf Ruby 2.2 aktualisiert habe, hatte ich aufgrund der Heroku-Speicherbeschränkung (512M) einige Speicherprobleme mit Puma. Ich habe ein paar verschiedene Konfigurationen ausprobiert, aber ohne Erfolg. Seit ich zu Passenger gewechselt bin, habe ich gesehen, dass die Speicherauslastung fast halb so groß ist wie bei Puma mit der gleichen Anzahl von Server-Instanzen (3 in meinem Fall).
In Bezug auf die Reaktionszeit scheint es so zu sein wie zuvor, aber mit diesen Speicherverbesserungen. Obwohl ich meine Anzahl von Heroku Dynos reduziert habe, um die gleiche Anzahl von Anfragen zu bearbeiten.
Zusammenfassend hat mir Passenger auf Grund meiner persönlichen Erfahrung viel geholfen, die Speicherkapazität der App zu reduzieren, aber es hat nicht geholfen, die durchschnittliche Antwortzeit zu verbessern. Ein weiterer guter Punkt ist, dass es mir bezüglich der Heroku-Preise sehr geholfen hat, die Kosten für mein Hosting zu reduzieren.
Ich weiß, dass dieser Beitrag ohne irgendwelche Benchmarks usw. nicht wirklich erschöpfend ist ... Aber ich dachte, dass es vielleicht interessant wäre, eine persönliche Erfahrung mit einer Migration von Puma zu Passenger zu haben.
Ich hoffe, es hilft:)
Zunächst sollten wir uns darüber im Klaren sein, dass die Frage, wie gut sich der Server bei steigender Nutzung skalieren lässt, wenn wir über die Serverleistung sprechen. Wenn Ihr Server über einen oder sehr wenige menschliche Benutzer verfügt, erhalten Sie für die meisten Apps dieselbe Endbenutzererfahrung unabhängig davon, welchen Server Sie verwenden, da der Engpass die Leistung von Ruby und nicht der des Anwendungsservers ist.
>Für mittlere und große Apps:
Sprechen wir also über Skalierung. Je mehr CPU-Leistung und Arbeitsspeicher Sie haben, desto mehr können Sie skalieren. Bei den meisten Servern ist der Arbeitsspeicher schneller als die CPU-Leistung. Der Schlüssel ist also, die Menge an RAM, die pro Anfrage verwendet wird, zu minimieren. Jede Anfrage, die der Server erhält, wird von einem Prozess oder einem Thread behandelt. Prozesse benötigen viel RAM, Threads benötigen wenig RAM. Das Ziel ist einfach, viele Threads und wenige Prozesse zu haben.
Puma und Passenger Enterprise sind beide Multi-Thread-Server, die ungefähr gleich skaliert werden. (Passagier-Benchmarks beanspruchen, 5 MB weniger RAM pro Prozess zu verwenden, aber dies ist vernachlässigbar.) Passagier selbst (die kostenlose Version) ist single-threaded und wird nicht skalieren sowie die bezahlte Passenger Enterprise-Version oder auch als Puma.
Wenn Sie also maximale Leistung wünschen, entscheiden Sie sich für Puma und Passenger Enterprise. Die Frage wird dann, ist Passenger Enterprise im Wert von den finanziellen Kosten vs ist Puma die technische Expertise Kosten wert. Die Antwort hängt davon ab, was in deinem Gehirn steckt, was auf deinem Bankkonto ist und wie groß deine allgemeinen Opportunitätskosten sind.
Passenger Enterprise verfügt über einige nützliche Tools, die Ihre Hand halten, wenn Sie kein Systemadministrator sind. Puma hat auch einige Tools, die aber nicht so leistungsfähig sind wie Passenger Enterprise. Puma erfordert Fachwissen auf Systemebene, wenn Sie die gleichen Kontrollfunktionen und Einblicke wie Passenger Enterprise erhalten möchten. (Sie können Puma auch ohne all die Schnickschnack von Passenger Enterprise verwenden, aber ich möchte diesen Vergleich "Äpfel-zu-Äpfel" behalten).
Ich persönlich bin ein Low-Level-Typ, der es liebt, Server zu konfigurieren, also ziehe ich es vor, meine Zeit für einen großartigen Ruby-Server einzutauschen und nicht mein Geld. Deshalb benutze ich Puma. Wenn Sie nicht daran interessiert sind, Low-Level-Artikel zu konfigurieren (oder wenn Sie ein Unternehmen sind, das realisiert, dass Softwarelizenzen billiger sind als Administrator-Entwickler), sind Sie möglicherweise besser mit einer bezahlten Passenger Enterprise-Lizenz zufrieden.
Für den Typ, der eine $ 5 VPS (oder eine ähnliche Umgebung mit wenig Ressourcen und wenig Verkehr) ausführt:
Was ich oben gesagt habe, ist mehr für Apps mit höherem Traffic auf Servern mit beträchtlichen Ressourcen. Du versuchst nur, mit den Grundlagen klarzukommen, also trifft es nicht wirklich auf dich zu.
Denken Sie an Puma und Passenger Enterprise als Jumbo Jets, die viele Leute sehr schnell bewegen können. Das ist viel mehr als deine kleine App braucht. Was Sie wirklich brauchen, ist der Server, der einem Honda Civic entspricht. Dafür sollten Sie entweder die kostenlose Version von Passenger oder Thin berücksichtigen. Verwenden Sie den kostenlosen Beifahrer, wenn Sie eine einfache Einrichtung und vernünftige Werkzeuge wünschen. Verwenden Sie Thin, wenn Sie eine ähnliche Leistung wünschen, aber bereit sind, den Server zu entwickeln.
In diesem Fall sehe ich keinen Grund, irgendetwas außer dem kostenlosen Passagier zu verwenden, außer Sie suchen nach einer Herausforderung.
Wie andere schon sagten, macht Passenger allein Ihre App nicht per se schneller. Der Passagier selbst ist in Version 5 viel schneller geworden, aber der App-Server ist nur ein Teil der Antwortzeit. Wenn Ihre App langsam ist, spielt es keine Rolle, wie schnell der Passagier selbst ist.
Passenger unterscheidet sich von anderen App-Servern dadurch, dass Sie aktiv dabei unterstützt, Ihre App schneller zu machen . Der Turbolader des Passagiers ist ein Weg, durch den Passagier Ihnen hilft. Der Artikel Dynamic Site ist so schnell als Static Generated One mit Raptor demonstriert einen guten Anwendungsfall für den Turbocache. Passenger bietet auch einen Optimierungsleitfaden , der Tipps zur Optimierung Ihrer App mit den Einstellungen für Passagiere enthält.
Tags und Links ruby nginx ruby-on-rails passenger