我是否應該期望 Google App Engine 會隨機重新啟動執行個體?

我是否應該期望 Google App Engine 會隨機重新啟動執行個體?

我昨天在 australia-southeast1 區域運行了該應用程式的一個實例(真為我感到羞恥)。

昨晚是該應用程式的關鍵時刻;人們依賴它完美地工作,然後在活動進行到一半時,實例就消失了。大約8分鐘後,一個新實例建立完成並繼續提供流量。

這是我該期待的嗎?實例隨機消失並重新啟動?我意識到我應該運行幾個版本,但是如果兩個版本同時重新啟動怎麼辦?

應用程式(標準的簡單 Rails 應用程式)重新啟動時,日誌不會顯示任何錯誤。日誌只有 8 分鐘的間隙,然後 Puma 在新實例中啟動。

CPU 使用率保持恆定,很少超過 5% 左右。記憶體使用量約為 840MB,重啟前略有峰值,為 880MB。 「磁碟位元組」恆定為約 15KB/秒,在重新啟動時出現 40MB/秒的大幅峰值。

應用程式.yaml

entrypoint: bundle exec rackup -p $PORT
env: flex
runtime: ruby

handlers:
- url: .*
  script: main.app
  secure: always

automatic_scaling:
  min_num_instances: 1
  max_num_instances: 4
  cpu_utilization:
    target_utilization: 0.75

答案1

根據文檔,意外重啟有兩個主要原因:

  • 實例每週重新啟動一次[1]。
  • 健康檢查給出的 HTTP 代碼不同於 200 [2]。

如果您提供一些額外的信息,我們可以討論。

答案2

與我類似的問題;新的健康檢查不檢查申請,只有 VM 和 Docker(除非你設定它們來檢查你的應用程序,而我沒有),所以很明顯問題出在應用程式引擎本身。

編輯:不確定為什麼否定,但為了更清楚地說明這一點。

是的,您應該期望它們會隨機重新啟動實例。您看到的行為不是由您的應用程式引起的。

相關內容