Nach mehrmaligem Hin und Her mit Google und stundenlangem Lesen von Blogs und Betrachten von Berichten habe ich endlich (etwas) eine Erklärung dafür gefunden, was passiert ist. Ich werde es hier mit meinen Vorschlägen veröffentlichen, damit nicht auch andere Menschen diesem Problem zum Opfer fallen.
Beachten Sie, dass dies für einige offensichtlich erscheint, aber als neuer GAE-Benutzer war dies alles für mich brandneu.
Kurz gesagt, bei der Bereitstellung in GAE und mit dem folgenden Befehl " $ gcloud app deploy " eine neue Version erstellt und als Standardversion festgelegt wird, wird vor allem die zuvor bereitgestellte Version NICHT entfernt.
Weitere Informationen zu Versionen und Instanzen finden Sie hier: https://cloud.google.com/appengine/docs/standard/python/an-overview-of-app-engine
In meinem Fall hatte ich, ohne es zu wissen, mehrere Versionen meiner einfachen Knoten-App erstellt. Diese Versionen werden weiterhin ausgeführt, falls nach einem Fehler gewechselt werden muss. Diese Versionen erfordern jedoch auch Instanzen, und die Standardeinstellung ist, sofern nicht in der app.yaml angegeben, 2 Instanzen.
Google sagt:
App Engine skaliert standardmäßig die Anzahl der hoch- und runterlaufenden Instanzen, um sie an die Last anzupassen. Auf diese Weise wird jederzeit eine konsistente Leistung für Ihre App bereitgestellt, während inaktive Instanzen minimiert und somit die Kosten gesenkt werden.
Nach meiner Erfahrung war dies jedoch nicht der Fall. Wie ich bereits sagte, habe ich meine Node-App mit nodemon gepusht, was anscheinend Fehler verursacht hat.
Am Ende hatte ich nach dem Tutorial und ohne das Projekt herunterzufahren, 4 Versionen mit jeweils 2 Instanzen, die 1,5 Monate lang in Vollzeit ausgeführt wurden, 0 Anfragen bedienten und viele Fehlermeldungen generierten. Das kostete mich 500 US-Dollar.
EMPFEHLUNGEN, WENN SIE GAE FLEX ENV NOCH VERWENDEN WOLLEN:
Richten Sie in erster Linie ein Abrechnungsbudget und Benachrichtigungen ein, damit Sie nicht von einer teuren Rechnung überrascht werden, die automatisch Ihrem CC belastet wird: https://cloud.google.com/billing/docs/how-to/budgets
In einer Testumgebung benötigen Sie höchstwahrscheinlich nicht mehrere Versionen. Verwenden Sie daher während der Bereitstellung den folgenden Befehl:
$ gcloud app deploy --version v1
Aktualisieren Sie Ihre app.yaml , um nur 1 Instanz mit minimalen Ressourcen zu erzwingen:
runtime: nodejs
env: flex
# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
- Legen Sie das tägliche Ausgabenlimit fest
Weitere Informationen finden Sie in diesem Blogbeitrag: https://medium.com/google-cloud/three-simple-steps-to-save-costs-when-prototyping-with-app-engine-flexible-environment-104fc6736495
Ich wünschte, einige dieser Schritte wären in das Tutorial aufgenommen worden, um diejenigen zu schützen, die versuchen zu lernen und zu experimentieren, aber das war nicht der Fall.
Google App Engine Flex env kann schwierig sein, wenn man nicht alle diese Details kennt. Ein Freund hat mich auf Heroku hingewiesen, der sowohl festgelegte Preise als auch Free / Hobby-Angebote hat. Ich konnte dort schnell eine neue Knoten-App pushen, und es funktionierte wie ein Zauber!
https://www.heroku.com/pricing
Es hat mich "nur" 500 US-Dollar gekostet, diese Lektion zu lernen, aber ich hoffe, dies hilft anderen, die sich Google App Engine Flex Env ansehen.