2017-09-09 2 views
1

Wir haben unsere Google App Engine Health Checks von der Legacy-Version auf die neue Version aktualisiert und jetzt funktionieren unsere Bereitstellungen nicht. Nichts anderes am Projekt hat sich geändert. Wir haben die Standardeinstellungen getestet und dann für alle Fälle erweiterte Prüfungen durchgeführt.sind aktualisierte Systemdiagnosen, die dazu führen, dass die App Engine-Bereitstellung fehlschlägt?

Dies ist der Fehler: ERROR: (gcloud.app.deploy) Error Response: [4] Your deployment has failed to become healthy in the allotted time and therefore was rolled back. If you believe this was an error, try adjusting the 'app_start_timeout_sec' setting in the 'readiness_check' section.

Dies ist unser app.yaml:

liveness_check: 
    check_interval_sec: 120 
    timeout_sec: 40 
    failure_threshold: 5 
    success_threshold: 5 
    initial_delay_sec: 500 

readiness_check: 
    check_interval_sec: 120 
    timeout_sec: 40 
    failure_threshold: 5 
    success_threshold: 5 
    app_start_timeout_sec: 1500 

Leider, unabhängig von der Konfiguration, sowohl die Bereitschaft und Vitalitätsprüfungen werfen 404s.

Was könnte das Problem verursachen? und wie können wir das debuggen? Ist es möglich, zu den alten Health Checks zurückzukehren?

+0

Update: Die aktualisierten Integritätsprüfungen verursachen das Problem. Wir haben gerade unsere App.yaml geändert, um ältere Health-Checks zu verwenden, und wir konnten ohne Probleme bereitstellen. – Mike

+0

Wie gehen Sie zurück zu alten Healthchecks? Der Befehl 'gcloud beta app update --split-health-checks' geht nur in eine Richtung. – speedplane

+0

Vorerst (bis 2018-09-30) können Sie zu den alten HealthChecks zurückkehren, indem Sie 'gcloud app update --no-split-health-checks' ausführen und dann erneut bereitstellen. Passen Sie auf, dass alte Gesundheitschecks Ende September 2018 weggehen werden. Quelle: https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml#health_checks – sengi

Antwort

1

Dies wird normalerweise verursacht, wenn die Anwendung weiterhin von den Legacy-Statusüberprüfungsflags liest und/oder die App unter Verwendung von gcloud app deploy bereitstellt, ohne zuerst die aktualisierten Integritätsprüfungen zu aktivieren. Sie können dies überprüfen:

1- Sicherstellen, dass das Legacy-Flag health_check nicht in Ihrer App.Yaml vorhanden ist.

2- Führen Sie gcloud beta app describe aus, um zu sehen, ob splitHealthChecks Flag unter featureSettings auf True gesetzt ist.

Standardmäßig werden HTTP-Anforderungen von aktualisierten Systemdiagnosen nicht an den Anwendungscontainer weitergeleitet. Wenn Sie die Systemdiagnosen für Ihre Anwendung erweitern möchten, geben Sie einen Pfad für die Verfügbarkeitsprüfung oder die Bereitschaftsprüfung an.

Sie können dann aktualisierte Systemdiagnosen aktivieren, indem Sie gcloud beta app update --split-health-checks --project [your-project-id] verwenden. Siehe this public issue tracker oder diesen Artikel über Updated Health Checks über für weitere Details.

+0

Was ist, wenn Sie zwei Apps unter demselben Projekt haben? Ich habe eine 'app.yaml', die auf GAE classic läuft und eine' vm.yaml', die auf flexibel läuft. Wie beeinflusst 'gcloud beta app update' diese? – speedplane

+1

@speedplane geben Sie einfach die regulären, alten Gesundheitschecks in Ihrer App.yaml an. Das habe ich getan, damit es funktioniert. '' 'health_check: enable_health_check: Wahre check_interval_sec: 5 timeout_sec: 4 unhealthy_threshold: 2 healthy_threshold: 2''' – Mike

+0

Die Split-Gesundheitschecks Einstellung ist projektweit. Es gilt jedoch nicht nur für den App Engine-Standard, sondern auch für die flexible Umgebung. https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml#health_checks – sengi

Verwandte Themen