2009-05-13 18 views
6

Meine Schienen Websites laufen Mongrel, ich habe ein Problem mit der Menge an Speicher verwendet wird. Meine Ruby-Bin-Prozesse verbrauchen etwa 66 MB residenten Speicher. Wie kann ich den Speicherbedarf von Rails reduzieren?Mongrel Rails Memory Footprint reduzieren und Leistung steigern?

Es ist nicht sehr wirtschaftlich, wenn viele Rails-Server auf einer einzigen Maschine laufen, wenn sie Speicher in diesem Tempo verbrauchen. Meine php5 fcgi-Prozesse liegen zwischen 15-25 MB.

Ich bin mit RoR ziemlich unbekannt, würde JRuby Hilfe verwenden? Kommentare, die hilfreich sind, um den Speicherbedarf zu reduzieren und die Leistung zu steigern, sind mehr als willkommen.

Antwort

7

Sie könnten sich Phusion Passenger und Ruby Enterprise Edition ansehen, das ist das De-facto-Standard-Setup für Rails-Anwendungen in diesen Tagen. Eines seiner Ziele ist die Verringerung des Speicherverbrauchs. Es ist auch einfacher als einen Haufen Mischlinge zu haben.

+0

+1 Ich bin die zweite Empfehlung des Passagiers. –

+0

+1 Ich stimme der REE-Empfehlung zu, da sie die MBARI-Patches enthält, die viel weniger Speicher verbrauchen. Das oder 1.9 verwendet auch weniger. Stellen Sie außerdem sicher, dass Sie ein 32-Bit-Betriebssystem verwenden, wo es möglich ist. – rogerdpack

3

Wenn Sie nicht für etwas anderes Apache gebunden sind, würde ich auch Nginx mit Phusion Passenger versuchen. Wenn Sie sich Gedanken über die Speicherauslastung machen, sollten Sie einen geringeren Platzbedarf von nginx als von Apache sehen, und die neueste Version von Passenger wird nginx mit minimalen Kopfschmerzen herunterladen, kompilieren und installieren.

1

Ich würde nicht so weit gehen zu sagen, Passenger ist der De-facto-Standard, aber es gewinnt viel Traktion. Wir sind gerade zu Nginx + Passenger gewechselt und unsere Speicherkapazität für Ruby-Apps (d. H. Mongrels vs. Passenger) ist von etwa 450 MB auf 295 MB gesunken. Es kann weniger fallen, da Passener Prozesse abtötet, wenn sie inaktiv sind (dies ist konfigurierbar), aber natürlich, wenn Sie Traffic erhalten und alle Instanzen verwenden, für die sie konfiguriert wurde, verbrauchen sie entsprechend Speicherplatz .

Beachten Sie, dass wir die Ruby Enterprise Edition noch nicht in unserer Konfiguration verwenden (hauptsächlich, weil sie bei Engine Yard noch nicht verfügbar ist), aber wir sehen immer noch einen kleineren Speicherbedarf. Speicher war der erste Hauptgrund für den Wechsel, aber es gibt noch weitere Vorteile, z. B. eine schnellere und einfachere Konfiguration für die Skalierung nach oben oder unten und so weiter.

3

Sie können Ihren Mongrel-Prozess auch durch Thin ersetzen, der effizienter ist und kürzlich in seine Garbage Collection (bis eventmachine) gepatcht wurde, um es noch besser zu machen.

Wir verwenden dünne Cluster hinter Nginx-Frontends mit feinen Ergebnissen.