2016-07-05 11 views
2

Ich muss eine VM-Instanz in der Google Compute Engine mit einem Startskript erstellen, das 30 Minuten dauert, aber es wird nie beendet, es stoppt etwa 10 Minuten nach dem Start der Instanz. Gibt es eine Auszeit? Gibt es eine andere Alternative, um das zu erreichen, was ich tun muss? Vielen Dank!Gibt es ein Zeitlimit für das Startskript, das beendet wird, bevor es beendet wird?

+0

Können Sie klären, was Ihr Startscript macht, das 30 Minuten dauert? Software herunterladen/installieren/konfigurieren? Kannst du es nach VM-Booten mit Tools wie Chef, Ansible, Puppet, Salt usw. machen? Sie helfen Ihnen auch beim Aktualisieren/Neukonfigurieren von Live-VMs während der Ausführung und nicht nur beim Start. Alternativ können Sie benutzerdefinierte VM-Images mit [Packer] (https://www.packer.io/) erstellen. –

+0

@MishaBrukman Mein Skript lädt ein anderes Skript herunter und führt es dann aus. Das Skript lädt einige große Dateien herunter und berechnet dann einige Werte basierend auf dem Längen-/Breitengrad. Wenn der Prozess beendet ist, wird die VM zerstört. Ich hatte diesen Prozess ohne Probleme im digitalen Ozean. –

Antwort

2

die zusätzliche Klärung in den Kommentaren Gegeben:

Downloads Mein Skript ein weiteres Skript und führt es dann, und das Skript was tut, ist einige große Dateien herunterladen, und dann einige Werte basierend auf Breite/Länge berechnen. Wenn der Prozess beendet ist, wird die VM zerstört.

Meine Empfehlung wäre, den großen Download und die Verarbeitung asynchron statt synchron auszuführen. Der Grund dafür ist, dass wenn es synchron ist, es Teil des VM-Starts (im kritischen Pfad) ist und die VM-Überwachungsinfrastruktur bemerkt, dass die VM ihre Startphase nicht innerhalb einer angemessenen Zeit beendet und sie beendet.

Stattdessen nehmen Sie die Heavy-Duty-Verarbeitung aus dem kritischen Pfad und tun Sie es im Hintergrund, d. H. Asynchron.

Mit anderen Worten, die derzeit das Startskript sieht wahrscheinlich wie:

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

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

ich Umwandlung würde vorschlagen, dies zu:

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

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

Was das bedeutet ist die schwere Verarbeitung im Hintergrund starten, aber Trennen Sie es außerdem vom übergeordneten Prozess, sodass es nicht automatisch beendet wird, wenn der übergeordnete Prozess (das eigentliche Startskript) beendet wird. Das Hauptskript soll beendet werden, damit die gesamte Startphase der VM als abgeschlossen markiert wird.

Weitere Informationen finden Sie unter Wikipedia page on nohup.

+0

Danke! Ich werde diese Lösung versuchen und Sie wissen lassen –

Verwandte Themen