MySQL - Too many connections
Wenn die Meldung: "Too many connections" beim Verbinden mit der MySQL erscheint, hat man den Wert der gleichzeitigen Verbindungen von einem Scipt (z.B. PHP) zur Datenbank erreicht ("max_connections"). Um das Problem nun zu lösen, sollte man als erstes seine aktuellen Werte über den Command-Prompt der MySQL abfragen (mysql -u user -p datenbankname).
Den aktuellen Wert ermittelt man mit dem Befehl:
Alle aktuellen MySQL Werte bekommt man mit: Um den Wert max_connections während der Laufzeit (ohne Neustart der MySQL) neu zu setzen reicht ein: Um beim Start der MySQL den Wert zu setzen, muss man in die Datei: den Wert: eintragen. Das war schon alles!
Danach noch einmal den Wert mit: überprüfen. Laut dem MySQL Handbuch kann eine MySQL Datenbank, je nach Hardware und RAM, bis zu 4000 Verbindungen vertragen (max_connections=3999). Man sollte sich aber unbedingt den Speicherverbrauch für jede einzelne Verbindung zusammenrechen. Mit jeder Verbindung steigt der gesamt Speicherverbrauch an. Der gesamt Speicherverbrauch für die MySQL sollte die Grenze von 60% bis 70% des Arbeitsspeichers nicht überschreiten (mein persönlicher Erfahrungswert).
Damit die Einstellung auch beim nächsten Neustart gesetzt wird, muss "max_connections" natürlich in die MySQL Konfigurationsdatei "my.cnf" (bei Linux meist unter /etc/mysql/my.cnf zu finden) eingetragen werden.
In diesem Zusammenhang sollte man sich das Tool mysqltuner anschauen. Es zeigt den maximalen Speicherverbrauch und Fehler in der "my.cnf" Konfiguration an. Auch kann es diverse Optimierungstipps für die Konfiguration geben.
Weitere Informationen findet man unter: http://docs.oracle.com/cd/E17952_01/refman-5.6-en/too-many-connections. ...
Wer noch weiterführende Erfahrungen mit dem "max_connect" Wert, oder jeder anderen MySQL Variablen hat, kann das gerne hier berichten.
Gruß
Frank
Den aktuellen Wert ermittelt man mit dem Befehl:
show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 200 |
+-----------------+-------+
Alle aktuellen MySQL Werte bekommt man mit:
SHOW STATUS;
set GLOBAL max_connections=500;
/etc/my.cnf
set-variable = max connections=500
Danach noch einmal den Wert mit:
show variables like 'max_connections';
Damit die Einstellung auch beim nächsten Neustart gesetzt wird, muss "max_connections" natürlich in die MySQL Konfigurationsdatei "my.cnf" (bei Linux meist unter /etc/mysql/my.cnf zu finden) eingetragen werden.
In diesem Zusammenhang sollte man sich das Tool mysqltuner anschauen. Es zeigt den maximalen Speicherverbrauch und Fehler in der "my.cnf" Konfiguration an. Auch kann es diverse Optimierungstipps für die Konfiguration geben.
Weitere Informationen findet man unter: http://docs.oracle.com/cd/E17952_01/refman-5.6-en/too-many-connections. ...
Wer noch weiterführende Erfahrungen mit dem "max_connect" Wert, oder jeder anderen MySQL Variablen hat, kann das gerne hier berichten.
Gruß
Frank
Please also mark the comments that contributed to the solution of the article
Content-ID: 1668
Url: https://administrator.de/contentid/1668
Printed on: December 10, 2024 at 14:12 o'clock
7 Comments
Latest comment
Hallo, ich habe den Wert während MySQL lief wie beschrieben gesetzt, er wird auch übernommen, jedoch ist er nach dem Neustart von MySQL wieder auf dem alten Wert. Muss ich den Wert auch in der etc/my.cnf setzen wenn ich ihn bereits über den set Befehl gesetzt habe?
Mich würde mal interessieren, wie man die richtigen Werte ermittelt?
Es kommt ja schon auf die Hardware an.
Ein P3/1000 ist mit max_connection=500 garantiert schnell überfordert.
Wer hat da Erfahrungen?
Ich zb.. betreibe einen Intel Celeron 2400 mit 512 MB Ram.
Wie hoch sollte da die max_connection sein?
Cu DeltaX
Es kommt ja schon auf die Hardware an.
Ein P3/1000 ist mit max_connection=500 garantiert schnell überfordert.
Wer hat da Erfahrungen?
Ich zb.. betreibe einen Intel Celeron 2400 mit 512 MB Ram.
Wie hoch sollte da die max_connection sein?
Cu DeltaX
Hallo es kommt da weniger auf die Connection als auf die Komplexität der DB an. Hast du Resultsets die aufwendig über mehrere Tabellen gehen kommst du recht schnell an deine Grenzen. Hast du recht flache Tabellen kannst du viel mehr Connection haben da der Server nur einfach Mengenlehre machen muß.
Ich selber habe einen PIII 800 EB mit 4 GB RAM. Da habe ich teilweise bis zu 1000 Connection und der läuft ohne mucken, da ich die Tabellen dementsprechend angepaßt habe.
Hoffe das ich ein wenig helfen konnte auch wenn es keine eindeutige Antwort auf deine Frage war.
Gruß
Sven
Ich selber habe einen PIII 800 EB mit 4 GB RAM. Da habe ich teilweise bis zu 1000 Connection und der läuft ohne mucken, da ich die Tabellen dementsprechend angepaßt habe.
Hoffe das ich ein wenig helfen konnte auch wenn es keine eindeutige Antwort auf deine Frage war.
Gruß
Sven