2012-06-05 62 views
5

我使用啓用了帳單狀態的Google Ap引擎。
空閒實例被設置爲:(1 - 1)爲什麼GAE推出了第二個實例,其中最大空閒實例設置爲1

enter image description here

而且只有2對我的服務的客戶,有時我看到了第二個實例。 麻煩的是,需要15秒才能啓動新實例(spring和co ..)。內存

enter image description here

80MB是HIGHT的一個實例?
登錄新實例:/ _ah/warmup 200 14580ms 0kb
第二個實例在幾秒鐘後消失。

爲什麼有3-4個請求,GAE運行第二個實例?第一個什麼都不做(差不多)!

我試圖修改「等待延遲」而沒有成功。

解決方案? :)

THX

+0

我覺得這種行爲很正常。無論何時請求進入,GAE都會啓動空閒實例,以便能夠有效地處理即將到來的請求。這只是爲了確保所有客戶獲得良好的表現。我認爲我們可以將此行爲與數據庫中連接池的工作方式進行比較。另見[link](https://developers.google.com/appengine/docs/adminconsole/performancesettings#Setting_the_Number_of_Idle_Instances) –

+0

我同意你Jan;但爲什麼在動態的他有「1」請求。這與我有同樣的行爲,但對我來說沒有意義,因爲在這一點上,它不再是一個熱身週期,而是一個真正的週期處理請求。處理的請求有很大的延遲。 –

回答

3

您已經詢問了一個空閒實例。在提供請求時,實例不是空閒的。因此,App Engine將啓動一個新實例來維護您請求的空閒實例數量。

+0

有趣!但是,如果新的是一個空閒的實例,爲什麼它需要一個請求? (所以有15秒的響應時間)。麻煩的是我沒有很多交通工具。因此,如果我將最小閒置實例設置爲自動,恐怕所有客戶的第一次請求都會有15秒的延遲:( – Samuel

+1

)請求是熱身請求,這是爲了避免用戶不得不忍受加載時間。 –

1

如果居民實例被認爲是「太忙」來處理請求時,App Engine將啓動另一個。即使流量非常低,如果應用同時處理了足夠的請求,AE可能會決定需要另一個實例來提供優質服務。你是正確的,增加掛起延遲會減少另一個實例開始的機會,但你不能完全禁止動態實例。

另外,你是否啓用了多線程?如果不是,那麼即使只處理一個請求,駐留實例也將處於忙碌狀態。如果你的代碼是線程安全的,你可以啓用多線程並且同時處理更多的併發請求。

由於流量非常低,實例數量非常少,因此App Engine在決定是否需要新實例時沒有大量信息可供繼續。您將看到更高的利用率和更少流量的虛假實例。

+0

Thx丹。是的,我啓用了多線程。它更瘋狂,它可以更好地處理流量:) GAE如何確定實例「太忙」?使用F2實例是一個解決方案? – Samuel

+0

我只覺得有資格在這裏給出一個模糊的答案。 AE可能會做一些有趣的事情來估計某個特定請求是否會被特定負載下的實例充分處理。但我不確定AE實際做了什麼,我希望AE團隊能夠自由調整這一點,而不是僅僅採取一種策略。 –

+1

要注意的主要問題是,對於動態實例,AE保留啓動新實例的權利。如果你真的想把所有東西都放到一臺服務器上,你可以使用一個可尋址的後端,這是以犧牲動態負載管理爲代價的。但是我猜你實際上是在詢問關於實例使用情況的問題:第二種情況是否意味着第一種情況已經最大化或者利用率很低?答案是,在某個特定的時刻它可能是,但這並不意味着你的應用程序處於連續負載之下,比一個實例通常可以處理的負載更大。 –

相關問題