2011-05-04 57 views
3

我是Google AppEngine上「Always On」選項的訂閱者。我不明白爲什麼GAE必須在已經打開「Always On」實例的情況下啓動新實例,並且此時不會有有大量請求。AppEngine無需啓動新實例

這讓我發瘋,因爲它會使AlwaysOn訂閱中的內容無效。任何想法如何解決這種行爲?我有延遲問題,因爲我想用AlwaysOn刪除這個問題。我正在考慮取消訂閱,因爲它不起作用。 List of active instances

+0

我想這個問題屬於他們的郵件列表:https://groups.google.com/forum/#!論壇/ google-appengine – zengr 2011-05-04 08:37:29

回答

3

AlwaysOn唯一做的事情就是確保始終有一些實例爲您的請求提供服務,即使您的應用程序在沒有任何流量的情況下經受了很長時間。至少就我所知,當涉及到App Engine用來確定是否需要新實例出現的縮放算法時,它不會改變任何內容。

不幸的是,對於這種GAE行爲的細節(即決定何時開始新實例)知之甚少。這可能是因爲你的應用程序最近有很多流量,昨天在同一時間有很多流量,同一個工作日上週很多流量,等等。這些因素中的任何一個(很可能有很多更多未知的)可能會影響GAE代表爲您的應用程序實例的數量。

我可以同情你對延遲問題的抱怨,但在我的經驗中,AlwaysOn功能減少了很多。儘管如此,我們必須記住,低延遲不是 GAE作爲服務的優先級 - 它能夠在不需要顯式縮放的情況下一致地處理巨大的流量。

0

我不認爲這一定會使Always On的好處無效,這可能是因爲用戶應該不那麼頻繁地等待新實例啓動以滿足他們的請求。

如果啓用了Warmup Requests,則App Engine可能會以預期的方式啓動新實例,即使持久實例可以處理當前負載。在這種情況下,動態實例的存在並不意味着用戶的請求被阻塞,等待實例加載。

我會建議添加足夠的日誌來判斷動態實例是否實際上在啓動時服務用戶請求。如果是這樣,他們在做什麼?也許你有一個動態頁面必須調用幾個額外的動態處理程序才能渲染所有的頁面資源。這可能會導致意外的流量高峯。

+0

是的,我通過GAE教程,我看到「**如果你的應用程序沒有提供流量,對應用程序的第一個請求將永遠是一個加載請求,而不是一個熱身請求。在大多數情況下使用Always On功能。**「。但是,對於小型頻率實用應用程序,我經常會看到它(每天至少一次)。 – 2011-05-04 15:47:51

+0

我有啓用的熱身請求(默認啓用),因爲我有Spring MVC應用程序,所以需要花時間加載 - 所以我正在使用熱身請求。不過,我真的可以注意到請求正在加載應用程序,而不是使用一些可用的GAE實例。不過謝謝你的提議,我會再看看這些請求,試圖找到其他線索 – 2011-05-04 15:51:26

0

我只想在我發佈在google-app-engine組(Link)上的相同問題上添加回答給我的答案。它幫助我降低了當時存在活動節點的情況下創建新節點的可能性。

您是否已將「線程安全」設置爲true?如果你不這樣做,每次只有 一次處理一個請求。

它給了我很多幫助 - 如果你和我有同樣的問題,試試吧。 Using_Concurrent_Requests

+0

的其他線索,你需要GAE 1.4.3版本來配置這個配置元素 – 2011-05-05 09:06:00