2014-09-22 12 views
6

Ein Projekt, das ich mit Meteor gemacht habe, hat ein Speicherleck, das sich im Laufe von ein oder zwei Monaten langsam ansammelt. Nachdem ich Tage vergeudet habe, um das Leck zu finden, habe ich das Handtuch geworfen, um nur einen automatischen Neustart hinzuzufügen, der einmal im Monat stattfindet. Ja, das ist eine schlechte Übung, etc.Meteor-Server von Meteor.js aus neu starten

Gibt es eine Möglichkeit, einfach von der Codebasis des Servers neu zu starten? Idealerweise wird dadurch auch eine Aktualisierung für verbundene Clients ausgelöst (ähnlich wie bei regulären Bereitstellungsupdates).

Dann nehme ich an, dieser Befehl könnte nur in einer guten alten JS-Timeout-Funktion geschachtelt werden.

+2

Ich denke, dass einfach 'process.exit()' sollte die Arbeit erledigen, da Ihre Anwendung wahrscheinlich sowieso in einer Umgebung mit automatischer Neustart-Funktion ausgeführt wird. –

+1

Haben Sie versucht, https://kadira.io/ zu verwenden, um das Problem zu finden? – zeroasterisk

Antwort

3

Die Antwort von apendua funktioniert. Es ist ein totaler Hack und nicht für die meisten Fälle empfohlen, aber großartig für Langzeitspeicherlecks.

Setzen Sie diese in Ihrem Startskript:

var restartFrequency = 1000 * 60 * 24; // 1 day (1000 millsec * 60 min * 24 hour) 
setTimeout(function(){ 
    process.exit(); 
}, restartFrequency); 
+0

1000 ms == 1 Sekunde. Ihre Übereinstimmung sollte "1000 * 60 * 60 * 24" => 1s * 60 (== 1 Minute) * 60 (== 1 Stunde) * 24 (== 1 Tag) sein – rkstar