Ich benutze collectiveidea's delayed_job mit meiner Ruby on Rails App (v2.3.8) und laufe ungefähr 40 Hintergrundjobs damit auf einem 8GB RAM Slicehost Rechner (Ubuntu 10.04 LTS, Apache 2).Verzögerte Jobs undichtem Speicher?
Sagen wir, ich ssh in meinen Server ohne Arbeiter laufen. Wenn ich free -m
mache, sehe ich, dass ich im Allgemeinen ungefähr 1GB RAM von 8 benutze. Nachdem ich die Arbeiter gestartet habe und ungefähr eine Minute gewartet habe, bis sie vom Code genutzt werden, bin ich bis zu 4GB. Wenn ich in ein oder zwei Stunden zurückkomme, bin ich bei 8GB und im Swap-Speicher und meine Website wird 502 Fehler erzeugen.
Bis jetzt habe ich gerade die Arbeiter getötet und neu gestartet, aber ich würde lieber die Wurzel des Problems beheben. Irgendwelche Gedanken? Ist das ein Speicherleck? Oder, wie ein Freund vorgeschlagen hat, muss ich eine Möglichkeit finden, die Garbage Collection auszuführen?
Es klingt wie ein Speicherleck, aber es kann in Ihrem Code sein, der von delayed_job ausgeführt wird, er darf nicht in delayed_job sein. Ein Code zur Überprüfung könnte helfen. – jigfox
Denken Sie auch daran, dass 1.9 und 1.8 dem Betriebssystem niemals Speicher zurückgeben werden. – tliff