2010-06-04 11 views
5

Meine Ruby on Rails-Anwendung verbraucht rund 129 MB Arbeitsspeicher. Ist das normal?Wie viel Speicher sollte eine Ruby on Rails-Anwendung verbrauchen?

Ich habe rund 3.000 Besucher pro Tag, ich habe keine komplexen Abfragen ...

Meine Benutzer-Tabelle über 18k Zeilen.

+0

Auf welchem ​​App-Server laufen Sie? – x1a4

+0

Wie viel Speicher haben Sie auf Ihrem Server? 129 ist wirklich ziemlich niedrig. –

+0

Mischlings .. Ich habe 4gb 'root @ veraserver01 [~] # kostenlos Gesamt verwendeten freier gemeinsamer Puffer zwischengespeichert Mem: 4149500 3959880 189620 0 261532 1556064 -/+ Puffer/Cache: 2.142.284 2.007.216 Swap: 2.096.440 116 2096324' Ist das das Problem? – Will

Antwort

4

129MB scheint mir nicht zu übertrieben, was ich wichtiger finde ist, wächst diese Zahl im Laufe der Zeit?

wenn es das Problem tut, ist wahrscheinlich, wie viel von Ihrem Datensatz, den Sie auf Anfrage und in den Speicher geladen werden

Check-out: http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/

in breif: Instanziieren zu viele aktive Datensatz Objekte ist ein Ort, wo Schienen Der Speicherbedarf der App wächst wirklich.

Wenn Sie in einer Anfrage aus irgendeinem Grund über alle 18k-Benutzer iterieren sollten, und schlimmer noch, über alle ihre Beiträge iterieren (oder welche Assoziationen Sie haben), würden Sie eine Tonne von Objekten instanziieren (sollte) nach der Anfrage gelöscht werden, aber Ruby gibt den Speicher nicht an das System zurück, nachdem es zugeordnet wurde.

+1

Danke für Ihre Antwort Dennis, ich habe eine Frage obwohl .. wie viele ist zu viele aktive Datensatzobjekte Ich nicht über alle 18k Benutzer iterieren, aber ich aktualisieren 64 aktive Datensatzobjekte (eins nach dem anderen), wenn der Benutzer speichert ein bestimmtes Formular ... sollte ich dann in einer einzigen Abfrage aktualisieren? Eine andere Sache ist, dass meine Rails App stürzt ... es sagt: "[FATAL] konnte Speicher nicht reservieren" – Will

+1

64 Update Abfragen pro speichern ist übermäßig –

+0

Es hängt davon ab, wie groß die Objekte sind, aber Sie sollten in der Lage sein zu behandeln mit vielen tausend Objekten. Wenn Sie das Update tun, tun Sie ": include =>" s auf den Objekten? versuchen, einen effizienteren Weg zu finden, als 64 Updates von 64 anderen Objekten scheint es wäre schlau. Was macht Ihre App speziell zum Absturz? Wie viel Speicher hat Ihr Server? bist du da raus? Wie groß ist die App, wenn sie startet/kurz bevor sie stirbt? diesen fatalen Fehler zu googeln. noch einmal, diese Jungs sind schlauer als ich. http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/ –

0

Ich habe gesehen, Schienen Anwendungen gehen so hoch wie 500 MB. Ich bin mir ziemlich sicher, dass es größere gibt. Eindeutige Besucher und Datenbankabfragen sind nicht die Ursache für die Speichernutzung. Es sind die teuren und großen In-Memory-Berechnungen in Ruby.

Testen Sie einige dieser Methoden mit AB und sehen Sie, wie hoch Ihre Speicherauslastung wird. Das könnte einige Speicherprobleme lösen.

Verwandte Themen