2012-06-13 69 views
3

我有一個運行在App Engine上的簡單應用程序,但是我遇到了延遲問題。這是一個Python 2.7應用程序,加載請求需要1.5到10秒(我想根據GAE的感覺)。這是一個低流量的網站,因此GAE之前沒有空閒實例,大多數請求都在加載請求,導致首頁視圖等待很長時間。即使在空閒實例可用時,App Engine加載請求

我已經嘗試配置空閒實例的最小數目爲「1」,以便這些偶發頁面視圖可以立即打開一個溫暖的實例。

不過,我已經看到了幾起案件現在在哪裏,甚至有一個實例坐在未使用的,GAE將路由傳入的請求,裝載實例,離開溫暖的實例不變:

gae dashboard showing odd scheduling

我怎樣才能防止這種情況發生?我覺得我必須理解錯誤,因爲我當然不期望這種行爲。

更新:另外,是什麼使這更不理解的是,應用程序有線程啓動,所以我真的不明白爲什麼會GAE心慌和自旋向上的實例爲一個單一的,孤立的請求。

+0

我見過同樣的行爲,但沒有找到它的原因。 –

回答

1

其實,我認爲這是正常的行爲。空閒實例應該保證始終可用的最小數量的實例(用於尖刻加載)。

因此,當一些請求開始進入時,它們最初由空閒實例提供服務,但同時AE調度程序將開始啓動新實例以始終保證即使在突然增加的負載期間也保持相同數量的空閒實例。也就是說,爲那些忙於服務請求的空閒實例「覆蓋」。

它在Adjusting Application Performance頁面詳細描述。

+0

我收錄了截圖,因爲它顯示了即使閒置的實例閒置時,單個單獨的請求如何轉發到新實例。即使GAE試圖維護一個空閒實例,爲什麼它會阻止在新實例加載時立即提供服務的請求? – mrestko

0

Arrrgh!我自己也是這樣。這個主題領域已經出現在幾個主題(GAE組& SO)。如果有人可以撥入低流量網站的設置(開/關計費),這將是一個真正的好處。 IIRC,有人認爲我的觀點是GAE的深刻體驗,在一個線程中指出,調度程序對於小批量應用程序並不適用。我也在相當短的時間內看到了截然不同的啓動時間。痛苦地看到spinup需要幾分鐘後需要700ms和7000ms。總的來說,這個問題不僅僅是我的成本,更重要的是浪費基礎設施資源。在測試中,儘管每隔幾分鐘就會用一次RPC將應用程序鎖定,但仍然有兩個實例正在運行。如果50k其他開發者進行類似的測試,那麼這可能會導致巨大的浪費。

+0

我感到沮喪,並嘗試將'最小空閒實例'轉換爲自動,然後每5-11分鐘執行一次cron.yaml任務執行ping命令... App Engine決定啓動三個實例來處理我的0.5 QPS人工流量。所以我想調度器只是不知道如何處理低流量。這非常令人失望。 – mrestko

相關問題