[ 276-mysql-tuning-nach-toomany-connections.jpg

Heute morgen hats mich erwischt…der MySQL5-Server hatte ein kleines Problem… Aufgrund der gestiegenen Last auf dem neuen Server hat die Anzahl der Queries die Anzahl der max_connections erreicht. Was heisst das konkret? Queries, welche nach dem Überschreiten dieser Zahl gesetzt werden, werden nicht ausgeführt, sondern mit dem Fehler “Too many Connections (localhost)” abgewiesen.

Wie kann man nun den MySQL-Server ein wenig tunen?

Es gibt hierzu ein Skript von Day32 , welches bei mir hervorragende Dienste geleistet hat:

1
2
3
cd /usr/src/
wget http://www.day32.com/MySQL/tuning-primer.sh
sh tuning-primer.sh

Tuning primer gibt nun eine Menge Vorschläge und Ratschläge aus, um den MySQL-Server ein bisschen zu tunen. Bei mir wars vor allem die Variable max_connections, welche per Default auf 100 steht, die nun ein wenig zu niedrig war.

Um dies zu ändern öffnet man die Datei my.cnf (bei mir unter /etc/mysql/) und fügt in der Sektion [mysqld] folgenden Wert hinzu (Bitte Anzahl der gleichzeitigen Verbindungen selbst wählen, ich habe mal 500 eingetragen):

1
max_connections = 250

Achtung: Bei mir trat ein Fehler auf, wenn ich vor und nach dem ‘=’ keine Leerzeichen gesetzt hatte. Ausserdem wird für jede Connection Ram benötigt, tuning-primer meckert aber dann schon ;)

Nun kann man entweder den Server neu starten, oder man setzt es temporär bis zum Neustart mit einem Query in die Datenbank:

1
mysql -u root -p
1
2
set GLOBAL max_connections=250;
exit;

Man kann das schnell prüfen, in dem man vor dem exit; folgenden Befehl in die Datenbank absetzt:

1
show variables like 'max_connections';

Weitergehende Informationen bekommt man beim Hersteller  im Handbuch.

Danke an dieser Stelle an Alex  (dem ich den Fehler nicht glauben wollte) und PaGo  (für den Screenshot, ich hab da noch geschlafen :) )