frank
Goto Top

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:

show variables like 'max_connections';   
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 200   |
+-----------------+-------+

Alle aktuellen MySQL Werte bekommt man mit:
SHOW STATUS;
Um den Wert max_connections während der Laufzeit (ohne Neustart der MySQL) neu zu setzen reicht ein:
set GLOBAL max_connections=500;
Um beim Start der MySQL den Wert zu setzen, muss man in die Datei:
/etc/my.cnf
den Wert:
set-variable = max connections=500
eintragen. Das war schon alles!

Danach noch einmal den Wert mit:
show variables like 'max_connections';
ü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

Content-ID: 1668

Url: https://administrator.de/contentid/1668

Ausgedruckt am: 26.11.2024 um 14:11 Uhr

6770
6770 25.11.2004 um 22:00:00 Uhr
Goto Top
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?
Frank
Frank 30.11.2004 um 13:24:24 Uhr
Goto Top
Hallo,

ja natürlich. Der Set Befehl gilt nur für den momentanen aktiven Zustand. Beim Neustart der MySQL muss der Wert in der my.cnf gesetzt sein.

Gruß
Frank
stilleswasser
stilleswasser 20.01.2006 um 13:09:13 Uhr
Goto Top
Hallo,

ich habe das gerade unter einem wamp ausprobiert aber er setzt die zahl nicht hoch (MySQL 4.0.15-nt win2000 server)

ich habe schon sämtliche cnf dateien angepasst (my-nt.cnf) gibts ncoh einen trick?

grüße

und vielen dank

christian
Biber
Biber 20.01.2006 um 13:35:52 Uhr
Goto Top
Moin stilleswasauchimmer,

a) durchgestartet hast Du die DB? (nur sicherheitshalber gefragt)
b) Das Setzen der Variable
set-variable=max_connections=500
sollte in die [mysqld] Section.
Sonst ignoriert MySQL das.

Grüße
Biber
BrainBug
BrainBug 25.06.2006 um 11:52:33 Uhr
Goto Top
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
SvenGuenter
SvenGuenter 07.08.2007 um 16:36:31 Uhr
Goto Top
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
ernibert
ernibert 31.10.2007 um 11:19:11 Uhr
Goto Top
hm, auf meiem debian system liegt die datei hier:
/etc/mysql/my.conf

trage ich die zeile dort ein und starte mysql neu wird der wert nicht übernommen. falsche datei oder kann es durch eine andee einstellung ausgehebelt werden?