2012-04-12 124 views
4

我的一個GAE任務隊列請求超出了軟內存限制(下面的日誌)。我對軟內存限制的理解是它允許請求完成,然後在完成後關閉實例。GAE:在「超出軟限制內存限制」後執行是否繼續?

但是,從日誌中看,當我遇到軟內存限制時,執行停止。在內存限制消息後我看不到更多的日誌記錄代碼,並且我檢查了我的狀態,看起來不像請求正在完成。我不確定它是否重要,但是這個請求是在延遲的庫TaskQueue中執行的。

因此,如果一個TaskQueue達到一個軟私人內存限制,執行繼續,直到請求完成或立即停止?是否有可能只記錄日誌代碼?

登錄:

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

回答

6

什麼發生在這裏的是處理程序在末尾檢查內存狀態,如果它超出限制它將記錄一個錯誤並將關閉實例。
由於任務已成功完成(您可以看到它終止將狀態200),它不會重試它。

期間處理程序執行內存狀態高於內存限制,處理程序將關閉實例並將返回錯誤500,在這種情況下,任務將重試。

+0

@speedplane每個請求的日誌記錄是有限制的,但是你應該在日誌查看器 – 2012-04-12 05:29:03

+0

+1中看到最後的日誌,但是你確定實例被關閉立即下降?我的後端實例已經多次超出其軟內存限制,並且從我所觀察到的情況來看,該實例在一段時間後突然關閉之前仍然可以處理請求。 (至少分鐘) – 2012-04-12 06:45:24

+1

是的,我確定。看看我剛剛發佈的日誌。它似乎崩潰而不打印任何日誌代碼。 – speedplane 2012-04-12 13:23:29

-1

從我的經驗:如果您的實例打軟內存命中,你的要求仍然會完成,但響應狀態是500

+1

這裏的響應狀態是200. – speedplane 2012-04-12 05:14:36

+0

它是200之前,但我認爲現在是500,或者有兩種記憶體命中,「超出軟性私人記憶體限制」一直給我500 – 2012-04-12 05:17:37

+0

響應狀態爲到應用程序,除非它可以完成之前終止(因爲,例如,它達到硬內存限制或時間限制)。 – 2012-04-13 05:13:03