2016-07-05 93 views
2

我需要在啓動腳本中使用30分鐘的時間在Google計算引擎中創建一個虛擬機實例,但它永遠不會結束,它會在實例啓動後大約10分鐘停止。有沒有超時?是否有另一種方法來完成我需要做的事情?謝謝!啓動腳本在停止之前是否有時間限制?

+0

你能澄清一下你的啓動腳本需要30分鐘嗎?下載/安裝/配置軟件?你可以在VM啓動後使用Chef,Ansible,Puppet,Salt等工具來完成它嗎?他們還將幫助您在運行時更新/重新配置活動虛擬機,而不僅僅是在啓動時。或者,您可以使用[Packer](https://www.packer.io/)預建自定義VM鏡像。 –

+0

@MishaBrukman我的腳本下載了另一個腳本,然後執行它,腳本做的是下載一些大文件,然後根據緯度/經度計算一些值。然後,當這個過程結束時,虛擬機被破壞。我有這個過程在數字海洋中沒有問題。 –

回答

2

鑑於該意見進一步澄清:

我的腳本下載另一個腳本,然後執行它,什麼是腳本做的就是下載一些大的文件,然後計算基於緯度/經度一些值。然後,當這個過程結束時,虛擬機被破壞。

我的建議是異步運行大量下載和處理,而不是同步運行。原因是,如果它是同步的,它是虛擬機啓動的一部分(在關鍵路徑中),並且虛擬機監控基礎結構注意到虛擬機沒有在合理的時間內完成其啓動階段,並且正在終止它。

取而代之的是,將重載處理從關鍵路徑中取出並在後臺執行,即異步執行。

換句話說,啓動腳本目前大概是這樣的:

# Download the external script 
curl [...] -o /tmp/script.sh 

# Run the file download, computation, etc. and shut down the VM. 
/tmp/script.sh 

我建議這個轉換爲:

# Download the external script 
curl [...] -o /tmp/script.sh 

# Run the file download, computation, etc. and shut down the VM. 
nohup /tmp/script.sh & 

這樣做有什麼在後臺啓動重處理,但還要將其與父進程斷開連接,以便在父進程(實際啓動腳本)終止時不會自動終止它。我們希望主啓動腳本終止,以便整個VM啓動階段都標記爲完成。請參考Wikipedia page on nohup

+0

謝謝!我會嘗試這個解決方案並讓你知道 –