MySQL Cluster: Problem mit "too many connections"
Posted: 2007-05-17 15:15
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
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