2017-02-22 110 views
0

我正在構建一個數據處理應用程序,我希望傳入(REST)請求可以啓動雲實例,執行一些處理,然後檢索結果。通常情況下,這將是這樣的:GAE可以配置爲每個請求啓動一個新實例嗎?

  1. 收到請求
  2. 啓動實例
  3. 發送請求到實例
  4. 實例進程(〜在所有情況下的CPU 100%負載)
  5. 調查服務運行狀態爲
  6. 從實例獲取結果
  7. 關閉實例

我打算使用類似jclouds的方法手動進行實例管理,但我想知道GAE是否可以配置爲執行此類操作(節省我的工作量)。

如果我在GAE中設置了我的處理服務,是否可以爲每個傳入請求啓動新實例(或者當前實例的CPU使用率爲100%時)?

回答

0

參照實例管理只(即1-4和7)...

Scaling dynamic instances

的應用程序引擎調度器決定是否服務於每個新的請求 與現有實例(無論是空閒的還是接受併發請求的 ),都會將請求放入掛起的請求隊列中,或者 爲該請求啓動一個新實例。該決定考慮了可用實例的數量 ,您的應用程序有多快( )服務請求(其延遲)以及將新實例啓動 需要多長時間。

每個實例都有自己的傳入請求隊列。 App Engine 監視每個實例隊列中等待的請求數。如果 由於負載增加,App Engine會檢測到應用程序的隊列變得太長,因此會自動創建 應用程序的新實例來處理該負載。

當請求卷 減少時,App Engine也會反向縮放實例。這種擴展有助於確保所有應用程序的當前實例都被用於實現最佳效率和成本效益。

所以在scaling configuration我會保持automatic_scaling(這是默認值),並一起玩:

的最大金額的一次App Engine的應允許請求 在啓動新實例以處理 它之前在待處理隊列中等待。默認值是「30ms」。

  • 較低的最大值意味着App Engine將盡快爲未決請求啓動新實例,從而提高性能,但會增加運行成本。
  • 高的最大意味着用戶可能會等待更長的時間對他們的請求送達(如果有掛起的請求,並 沒有空閒的情況下,爲他們服務),但你的應用程序將大大降低運行成本。

的時候,應用程序引擎應該允許啓動一個新的實例來處理它之前 等待在等待隊列的請求的最低金額。

  • 當所有現有實例處於活動狀態時,最小值意味着請求必須在待處理隊列中花費更少的時間。這可以提高性能,但會增加運行應用程序的成本。
  • 較高的最低意味着如果所有現有實例是激活的請求將保持未決更長。這降低了運行成本,但是增加了用戶必須等待其服務請求的時間 。

又見Change auto scaling performance settings

  • 閔噴玎延遲 - 提高Min Pending Latency指示App Engine的調度程序無法啓動一個新的實例,除非請求 一直懸而未決的不是更指定時間。如果所有實例 都忙,則面向用戶的請求可能不得不在等待隊列 中等待,直到達到此閾值。設置較高的值,這個設置 將需要較少的情況下被啓動,但可能會導致增加的負載在高 用戶可見的延遲。

你也可能想看看Warmup requests,如果你想減少等待時間,這將導致一個新的實例啓動的請求。

相關問題