Ich habe eine Google App Engine-App, die eine Google Cloud SQL-Instanz zum Speichern von Daten verwendet. Ich brauche meine Instanz in der Lage, Hunderte von Clients gleichzeitig zu bedienen, über erholsame Aufrufe, die jeweils zu einer oder einer Handvoll DB-Abfragen führen. Ich habe die Methoden, die DB-Zugriff benötigen, umbrochen und das Handle auf der DB-Verbindung in os.environ gespeichert. Siehe diese SO Frage / Antwort für im Grunde, wie ich es mache.
Sobald jedoch einige hundert Clients eine Verbindung zu meiner App herstellen und Datenbankanrufe auslösen, erhalte ich diese Fehler in den Fehlerprotokollen von Google App Engine (und meine App gibt natürlich 500 zurück):
%Vor%Irgendwelche Tipps von erfahrenen Nutzern von Google App Engine und Google Cloud SQL? Vielen Dank im Voraus.
Hier ist der Code für den Decorator, den ich für Methoden verwende, die eine DB-Verbindung benötigen:
%Vor%Kurze Antwort: Ihre Abfragen sind wahrscheinlich zu langsam und der MySQL-Server hat nicht genug Threads, um alle Anfragen zu verarbeiten, die Sie senden wollen.
Lange Antwort:
Als Hintergrund hat Cloud SQL zwei Grenzen, die hier relevant sind:
Es klingt nicht so, als ob das Verbindungslimit Sie betrifft, aber ich wollte es nur für den Fall erwähnen.
Wenn es zu Concurrent Requests kommt, kann das Erhöhen des Limits helfen, aber normalerweise wird das Problem dadurch noch verschlimmert. Es gibt zwei Fälle, die wir in der Vergangenheit gesehen haben:
Sie sollten EXPLAIN und ENGINE INNODB STATUS ANZEIGEN , um zu sehen, welches der beiden Probleme auftritt.
Natürlich ist es auch möglich, dass Sie nur eine Tonne Verkehr in Ihrer Instanz fahren und es nicht genug Threads gibt. In diesem Fall wirst du wahrscheinlich sowieso die CPU für die Instanz ausschöpfen, also wird das Hinzufügen von mehr Threads nicht helfen.
Ich habe aus der Dokumentation gelesen und festgestellt, dass es ein Limit für 12 Verbindungen / Instanzen gibt:
Suchen Sie nach "Jede App Engine-Instanz darf nicht mehr als 12 gleichzeitige Verbindungen zu einer Google Cloud SQL-Instanz haben." in Ссылка
Tags und Links python mysql google-app-engine google-cloud-sql wsgi