2016-07-05 73 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

谢谢!我会尝试这个解决方案并让你知道 –

相关问题