MySQL Cluster: Problem mit "too many connections"

simcen
RSAC
Posts: 338
Joined: 2003-02-12 14:35
Location: Bern, Schweiz

MySQL Cluster: Problem mit "too many connections"

Post by simcen »

Hallo Zusammen

Ich betreibe einen MySQL5.0 Cluster mit Master-Master Replikation hinter einem Alteon Hardware-Loadbalancer um Ausfallsicherheit und Lastverteilung zu gewährleisten.

Der Loadbalancer macht regelmässig alle paar Sekunden einen Healthcheck basierend auf einem TCP/IP-Connect auf den MySQL-Port.
Dieser Check verwendet aber nicht MySQL-Protokoll sondern ist lediglich ein Check ob noch ein Listener auf dem Port ist.
Da der Loadbalancer kein mysql_close macht, hält der Daemon die Connection noch als "offen" in der Processlist und schliesst diese erst nach dem Timeout.
Das Problem ist jetzt dass diese Sleeps die max_connections füllen und ich dann keine neuen Connects mehr aufbauen kann...

Hat jemand eine Idee wie ich das verhindern kann? Gibt es eine möglichkeit in MySQL für bestimmte Clients das Timeout herunter zu setzten? Was habe ich für Nachteile wenn ich das globale Connection-Timeout heruntersetze (aktuell ist wait_timeout auf 28800 (default) und connect_timeout auf 5 (default))? Gibt es auf OS-Level eine Lösung?

Hoffe ich habe es klar erläutert, sonst einfach fragen wenn noch was unklar ist =)

Herzlichen Dank für eure Hilfe
Gruss
Simon
Top

wirtsi
Posts: 29
Joined: 2002-07-18 14:12

Re: MySQL Cluster: Problem mit "too many connections"

Post by wirtsi »

hello

schreib dir ein Shellscript, welches sich jede Minute mit dem lokalen MySQL Server verbindet. Gelingt dies, wird ein Socket auf einem freien Port geöffnet (bzw. offen gehalten). Falls es nicht gelingt, wird der Port geschlossen.

Auf dem Loadbalancer fragst du dann den neuen Port ab. Das hat auch den Vorteil, dass du wirklich erkennen kannst, ob MySQL läuft. Könnte ja auch sein, dass der Server abgeschmiert ist, aber trotzdem noch einen Port offen hält.

wirtsi
Top

oxygen
RSAC
Posts: 2179
Joined: 2002-12-15 00:10
Location: Bergheim

Re: MySQL Cluster: Problem mit "too many connections"

Post by oxygen »

Ich denke auch, du solltest lieber die Checkmethode ändern. Es gibt soviele Probleme die ein MySQL Server haben kann, wo der Port offen ist, aber ein ordentlicher Betrieb nicht möglich ist.
Am besten wäre es, du würdest irgendwie einen Probe Query machen.
Top