Bei regelmäßigen Verbindungsversuchen mit dem MySQL-Server der 2. Generation tritt dieser Fehler auf:
OperationalError: (2062, 'Cloud SQL socket open failed with error: Transport endpoint is not connected')
Dies bleibt etwa 10 Minuten lang bestehen und verschwindet dann.
Der einzige Hinweis auf diesen Fehler in Verbindung mit Cloud SQL, den ich finden konnte, ist, dass er möglicherweise mit Verbindungslimits zusammenhängt (https://groups.google.com/d/msg/google-cloud-sql-discuss/sdeD17oDBOQ/wtTewl4-EgAJ), aber abgesehen von einer TaskQueue-Aufgabe passiert mit der Instanz sehr wenig, daher halte ich es für unwahrscheinlich, dass wir auch nur das Limit von 12 pro Instanz erreichen (und definitiv nicht das Gesamtlimit von 4.000).
Der Code, der diese Ausnahme verursacht, verwendet dieselben DB-Einstellungen wie der Rest der App und versucht lediglich, SELECT
eine Zeile nach Primärschlüssel aufzurufen (also eine kleine Abfrage).
In den DB-Protokollen gibt es zahlreiche Einträge zu diesem Fehler, und zwar wie folgt:
[Note] Aborted connection 39643 to db: 'my_schema' user: 'root' host: 'cloudsqlproxy~<instance_ip>' (Got an error reading communication packets)
aber ich bin nicht sicher, ob sie zusammenhängen, da sie ziemlich regelmäßig den ganzen Tag über auftreten und der obige Fehler nur zu einer bestimmten Uhrzeit für ca. 10 Minuten auftritt.
Dies begann erst nach dem Upgrade auf Cloud SQL der 2. Generation.
Hat das sonst noch jemand gesehen oder weiß mehr darüber?
Antwort1
Es stellte sich heraus, dass die Ursache hierfür Verbindungsbeschränkungen waren, wie ursprünglich im in der Frage verlinkten Google Groups-Chat vorgeschlagen.
Der Fehler trat auf, weil die Pipelines-API die Webanwendung verwendet, während der Rest der App Django verwendet. Da Django Verbindungen für uns schließt, gab es keinen Code, um dies manuell zu handhaben, aber die Routen, die über die Webanwendung gingen und auf die Datenbank zugriffen (unter Verwendung des Verbindungscodes von Django), ließen sie offen, was dazu führte, dass das Limit schließlich erreicht wurde.