Intermittierend kann keine Verbindung zu mysql in AWS RDS hergestellt werden (Fehler 2003)

8

Wir haben ein zeitweiliges Problem mit Verbindungen zu unserem mysql-Server. Der Fehler, den wir erhalten, ist wie folgt.

(2003, 'Can\'t connect to MySQL server on \'<connection>\' ((2013, "Lost connection to MySQL server during query (error(104, \'Connection reset by peer\'))"))') Callstack: File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 818, in _connect 2003, "Can't connect to MySQL server on %r (%s)" % (self.host, e)) File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 626, in __init__ self._connect()

Weitere Informationen:

  • Wir haben einen Flug von EC2-Servern, die ständig Abfragen an ein Backend-RDS ausführen.
  • Durchschnittlich etwa 500 Verbindungen pro Sekunde zum RDS
  • Wir haben ungefähr 0 - 4 Schluckauf pro RDS pro Tag
  • Der Schluckauf entspricht nicht unserem Wartungsfenster
  • Wenn wir auf einen Schluckauf treffen, kann das ziemlich viele Verbindungen beeinflussen ~ 50
  • Wenn ein Schluckauf passiert, werden Verbindungen über alle Server und Ports unterbrochen

Der Fehler selbst scheint von der TCP-Verbindung erzeugt zu werden, die auf dem ec2 geschlossen ist. Unsere TCP Keep Alive Time ist auf 7200 Sekunden eingestellt und dann wird der Fehler ausgelöst.

Meine Frage ist, was getan werden kann, um herauszufinden, warum diese Schluckauf passiert? Es ist toll, dass sie nicht oft vorkommen, aber es ist nicht ideal, dass sie überhaupt passieren.

Jeder Rat wäre dankbar, danke!

Update 10/29:

Ich habe einen Dienst ausgeführt, der prüft, ob auf dem SQL-Server lange Prozesse laufen, und es sieht so aus, als würden diese Fehler nicht so weit kommen. Ein neuer Prozess wird nie für diese Verbindung erstellt! Ich habe immer noch die Schluckauf bekommen, nur keine Anzeichen von Verbindungen.

    
Zach 24.10.2014, 20:56
quelle

1 Antwort

1

Nach einem hin und her mit Amazon-Unterstützung ist hier die aktuelle Lösung, zu der wir gekommen sind.

Amazon hat unser Socket-Listen-Backlog angehoben, indem wir den somaconn-Wert für die RDS-Instanz angepasst haben.

Der Wert hatte den Standardwert 128 und wurde auf 1024 erhöht.

Sobald der Wert angepasst wurde, haben wir den Fehler Verbindungsverlust nicht mehr erhalten.

    
Zach 12.12.2014 21:16
quelle