2012-04-12 6 views
4

Eine meiner GAE-Aufgabenwarteschlangenanforderungen überschritt die Grenze für den weichen Speicher (Protokoll unten). Ich verstehe die Grenze für den weichen Speicher so, dass die Anforderung abgeschlossen wird und die Instanz anschließend beendet wird.GAE: Wird die Ausführung nach dem Überschreiten der Grenze für "Soft Private Memory" fortgesetzt?

Aus den Protokollen sieht es jedoch so aus, als wenn ich den Soft-Memory-Grenzwert erreiche, stoppt die Ausführung. Nach der Speicherlimitnachricht wird kein Protokollierungscode mehr angezeigt, und ich habe meinen Status überprüft, und es sieht nicht so aus, als ob die Anforderung abgeschlossen wird. Ich bin mir nicht sicher, ob es wichtig ist, aber diese Anforderung wird in einer TaskQueue der zurückgestellten Bibliothek ausgeführt.

Also, wenn eine TaskQueue ein Soft-Private-Memory-Limit erreicht, wird die Ausführung fortgesetzt, bis die Anfrage abgeschlossen ist oder sofort anhält? Ist es möglich, dass nur Logging-Code nicht mehr aufgezeichnet wird?

Log:

2012-04-11 23:45:13.203 
Exceeded soft private memory limit with 145.848 MB after servicing 3 requests total 
W 2012-04-11 23:45:13.203 
After handling this request, the process that handled this request was found to be using too much memory and was terminated. This is likely to cause a new process to be used for the next request to your application. If you see this message frequently, you may have a memory leak in your application. 

Log Screenshot

Antwort

6

wäre Was passiert hier ist, dass Handler am Ende überprüft den Speicherstatus, wenn es über der Grenze ist, wird es einen Fehler protokollieren und wird die Instanz herunterfahren.
Da die Aufgabe erfolgreich abgeschlossen wurde (Sie können sehen, dass sie den Status 200 beendet), wird sie nicht wiederholt.

Wenn während Handler-Ausführung der Speicherstatus weit oberhalb des Speicherlimits ist, wird der Handler die Instanz herunterfahren und Fehler 500 zurückgeben, in diesem Fall wird die Aufgabe erneut versuchen.

+0

@speedplane gibt es ein Limit für die Protokollierung pro Anfrage, aber Sie sollten die letzten Protokolle in der Protokollanzeige –

+0

+1 sehen, aber sind Sie sicher, dass die Instanz geschlossen ist sofort runter? Ich hatte meine Backend-Instanz für mehrere Male überschritten, und von dem, was ich beobachtet habe, konnte die Instanz Anfragen immer noch bedienen, bevor sie nach einer bestimmten Zeit abrupt heruntergefahren wurde. (Minuten, mindestens) –

+1

Ja, da bin ich mir sicher. Schau dir das Protokoll an, das ich gerade gepostet habe. Es scheint abzustürzen, ohne dass überhaupt ein Protokollierungscode gedruckt wird. – speedplane

-1

Aus meiner Erfahrung: wenn Ihre Instanz weich Speicher Hit trifft, noch Ihre Anfrage fertig sein würde, aber die Antwortstatus 500.

+1

Hier ist der Antwortstatus 200. – speedplane

+0

es war 200 vor, aber ich denke jetzt ist 500, oder es gibt zwei Arten von Speichertreffern, die "Überschreitung weichen privaten Speicherlimit" geben Sie mir immer 500 –

+0

Der Antwortstatus ist abgelaufen zur App, es sei denn, es wird beendet, bevor es beendet werden konnte (weil es zum Beispiel das Limit für den Festspeicher oder das Zeitlimit erreichte). –

Verwandte Themen