2013-05-01 65 views
2

我們的應用程序廣泛依賴於backend instances。有一些邏輯必須每隔幾秒運行一次。這個代碼的執行不僅可以由到達前端的請求驅動,因爲它需要無論如何運行。Google App Engine中常駐後端實例的可用性

我們只考慮用task queues來解決這個問題。但據我們所知,任務隊列只能保證任務將在24小時內執行。儘管如此,我還沒有找到支持這一點的參考。

我們的應用程序使用固定數量的residentB1後端實例。我們假設每個實例在後端版本部署和啓動後24/7保持活動狀態。

  • 這是一個有效的假設嗎?如果沒有,每次後臺實例將被關閉時,我們的應用程序是否會被通知?
  • 關於後端實例可用性的SLA是什麼?
  • 後端實例在終止後是否自動重新啓動?例如。內存用完後是否會自動重啓實例?
  • 實例如果每次終止都會再次提出多快?
  • 我們在每個後端實例上創建一個固定大小的線程池。線程池的最大大小是否可以放在後端實例上?
  • 有沒有其他條件下的後端實例可能死?

謝謝!

最新通報

原來一對夫婦的問題可以通過閱讀the​​來回答。

App Engine嘗試保持後端無限期運行。但是,目前沒有保證後端正常運行的時間。

  • 那麼什麼是SLA正常運行時間?我期待像聲明:「對後端的正常運行時間是99.99%」

App Engine的團隊將提供預期的後端正常運行時間更多的指導,統計變得可用。

  • 這個統計數據時,將可用?

同樣重要的是要認識到,關閉鉤子並不總是能夠運行後臺終止之前。在極少數情況下,可能會發生停機,導致App Engine無法提供30秒的關機時間。

當App Engine需要掉頭向下一個後端實例,給出了30秒才能完成,而新的要求現有請求立即返回404

下面的代碼示例演示了一個基本的關閉掛鉤:

LifecycleManager.getInstance().setShutdownHook(new ShutdownHook() { 
    public void shutdown() { 
    LifecycleManager.getInstance().interruptAllRequests(); 
    } 
}); 

回答

2

我只運行一個駐留(非動態)後端實例,我的經驗是它每天重新啓動一次至少。 您的應用程序必須能夠存儲其狀態並在重新啓動後恢復。

+1

感謝分享!我仍然希望得到更詳細的答覆。目前的文檔(「App Engine團隊將在統計數據可用時提供有關預期後端正常運行時間的更多指導。」)非常小。 – Ingo 2013-11-20 17:11:08

相關問題