So habe ich diese Schiene App mit einem schrecklichen Speicher-Leck-Problem. Ich betreibe es auf Heroku, und während der letzten paar Tage, während ich versucht habe herauszufinden, was um alles in der Welt es verursacht, musste ich die App ständig alle 5 Stunden neu starten oder der Speicher überschreitet 512 und Meine App stürzt ab.Memory Leak in Schienen App ... String Albtraum
Ich benutze Oink, und ich sehe nichts fischiges mit meinen instanziierten Klassen. Die einzige Sache ist, dass mit jeder Seitenladung der verwendete Speicher schleicht. Es spielt keine Rolle, welche Seite ich lade, es ist scheinbar zufällig.
New Relic war auch nicht viel Hilfe, da es nicht mit einer bestimmten Controller-Aktion zu tun hat.
Das einzige, was ich finden konnte, war mit ObjectSpace, die eine enorme Anzahl von String-Objekten im Speicher ergab, und die Zahl wächst und wächst. Ich benutzte ein kleines Werkzeug, um den Wert der Zeichenfolgen zu protokollieren, und sie sind alle leer. Nicht Null ... aber Leerzeichen. Meine Produktions-App hat regelmäßig mehr als 200.000 String-Objekte im Einsatz.
Hat jemand eine Idee, woraus diese möglicherweise kommen könnten? Das ist wirklich anstrengend, dass ich alle fünf Stunden an meinem Computer sein muss, um meine Seite am Leben zu erhalten.
Danke!
Es ist schwer, einen konkreten Ratschlag zu geben, außer nur Code zu entfernen, bis Sie das kleinstmögliche Beispiel haben, das das Problem aufweist. –
Und es auf einem alternativen Server ausführen, und es mit konstanten CURL-Anforderungen zu schlagen, bis Sie repro können. – peterept
Hinweis: Tun Sie nicht 'String = String1 + String2', noch' String + = String1'. Do: 'string << string 1', auf diese Weise wird kein zusätzlicher String erzeugt – apneadiving