Google App Engine und Cloud SQL: Verlorene Verbindung zum MySQL-Server beim Lesen des ersten Kommunikationspakets

9

Ich habe eine Django-App in der Google App Engine-App, die mit einem Google Cloud SQL verbunden ist, und zwar mit dem App Engine-Authentifizierung .

Die meiste Zeit läuft alles gut, aber von Zeit zu Zeit wird die folgende Ausnahme ausgelöst:

%Vor%

Laut den Dokumenten wird dieser Fehler unter folgenden Umständen zurückgegeben:

  

Wenn Google Cloud SQL die Verbindung ablehnt, z. B. weil die IP-Adresse, von der aus Ihr Client eine Verbindung herstellt, nicht autorisiert ist.

Das ist in meinem Fall nicht sehr sinnvoll, da die Authentifizierung vom App Engine-Server ausgeführt wird.

Was könnte diese sporadischen Fehler verursachen?

    
Tzach 05.08.2014, 12:53
quelle

3 Antworten

14

Ich hatte ein ähnliches Problem und kontaktierte Google für Hilfe. Sie erklärten, dass es passiert, wenn sie eine Instanz neu starten oder verschieben müssen. Wenn die Client-Instanz neu gestartet oder auf einen anderen Host-Server verschoben wurde (für verschiedene Versionen), werden die IPs nicht übereinstimmen und diesen Fehler auslösen. Sie erwähnten, dass die Server möglicherweise für Patches, Fehler und Verzögerungen neu gestartet werden, die ein ähnliches Verhalten verursachen (sei es der gleiche oder ein ähnlicher Fehler). Der Server bewegt sich auch, um näher an den Instanzen zu sein und die Antwortzeiten zu erhöhen. Wenn Sie während des Verschiebens eine Anfrage senden, werden Fehler ausgelöst.

Sie haben mir gesagt, dass ich Wiederholungsfänge einprogrammieren muss, ähnlich wie Sie mit Datenspeicher-Timeouts umgehen. Wenn man sich vor Augen hält, dass man zu viele Back-Off-Mechaniken eingebaut hat, kann das Senden zu vieler Requests nach einem Neustart zu einem Absturz führen.

Wie oft passiert das?

    
Ryan 14.08.2014, 18:27
quelle
3

In unserem Fall hatten wir die Instanzen im Code falsch umbenannt. Als wir wieder zu den richtigen Namen gewechselt haben, hat alles gut funktioniert. Stellen Sie sicher, dass Ihre Cloud SQL-Instanz sowohl in der Google Cloud Console als auch innerhalb des Codes, den Sie für den Zugriff darauf verwenden, korrekt benannt ist dass Ihre Google App Engine-Instanz mithilfe Ihrer Cloud SQL-Instanz eine Verbindung zu ihr herstellen kann, ist Access control .

    
Omar Trejo 13.05.2015 15:53
quelle
-1

Ich hatte dieses Problem auch mit Django 1.10 und GAE. Die Anwendung funktionierte gut lokal (Verbinden der Cloud-SQL über cloud_sql_proxy), aber ich würde den Fehler 38 erhalten, wenn Sie die GAE-Instanz der Anwendung verwenden.

Mein Problem stellte sich als mein Datenbankbenutzer heraus. Der Benutzer hatte einen Bindestrich. Nachdem ich einen neuen Benutzer ohne Bindestrich erstellt und meine Anwendung für die Verwendung des neuen Benutzers geändert hatte, funktionierte die GAE-Instanz der Anwendung if

    
E Smith 23.03.2017 15:22
quelle