wake-up-neo.net

Wie programmiert man max_connections in MySQL?

Ich habe einen Server, von dem viele Benutzer eine Verbindung herstellen und dort eine Datenbank verwenden, und ich verwende MySQL. Ich weiß, dass die Standardnummer von max_connections in MySQL 100 oder 150 ist, aber ich bin mir sicher, dass ich weit über diese Zahl hinaus brauche. Daher habe ich Folgendes verwendet, um die Anzahl zu erhöhen:

SET global max_connections = 1000000

Jetzt versuche ich, den max_connections wie folgt zu überprüfen:

show variables like 'max_connections'

Es gibt mir folgendes:

max_connections; 100000;

Welches ist ein Zeichen dafür, dass es gelungen ist (es sei denn, ich verstehe es falsch). Wenn meine Benutzer eine Verbindung herstellen, erhalte ich eine Fehlermeldung vom Server, wenn mehr als 110 Benutzer verbunden sind. Der Fehler lautet:

verbindungsfehler: Zeitüberschreitung abgelaufen. Das Timeout ist vor dem .__ vergangen. eine Verbindung aus dem Pool erhalten. Dies kann aufgetreten sein weil alle gepoolten Verbindungen verwendet wurden und die maximale Poolgröße .__ war. erreicht.

Warum erhalte ich diese Fehlermeldung und wie kann ich sie beheben?

30
antf

max_connections ändern

Sie können max_connections während der Ausführung von MySQL über SET ändern:

mysql> SET GLOBAL max_connections = 5000;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE "max_connections";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 5000  |
+-----------------+-------+
1 row in set (0.00 sec)

Zu OP

timeout bezogen

Ich hatte Ihre Fehlermeldung noch nie gesehen, also habe ich gegoogelt. wahrscheinlich verwenden Sie Connector/Net. Connector/Net Manual gibt an, dass die Größe des Verbindungspools maximal ist. (Standardeinstellung ist 100) siehe Tabelle 22.21.

Ich schlage vor, dass Sie diesen Wert auf 100.000 erhöhen oder das Verbindungspooling deaktivieren. Pooling=false

AKTUALISIERTE

er hat zwei fragen.

Q1 - Was passiert, wenn ich das Pooling deaktivierenconnection pooling ist ein Mechanismus, der bereits bestehende DB-Verbindungen verwendet. Die Kosten für die Herstellung einer neuen Verbindung sind hoch. http://en.wikipedia.org/wiki/Connection_pool

Q2 - Kann der Pooling-Wert erhöht werden oder maximal 100?

sie können erhöhen, aber ich bin mir sicher, was der MAX-Wert ist, vielleicht max_connections in my.cnf

Mein Vorschlag ist, das Pooling nicht auszuschalten, den Wert um 100 zu erhöhen, bis kein Verbindungsfehler auftritt.

Wenn Sie ein Belastungstest-Tool wie JMeter verwenden, können Sie sich selbst testen.

48
Jason Heo

Sie können max Verbindungen einstellen mit:

global max_connections = '1 < your number > 100000'; setzen

Dadurch wird die Anzahl der MySQL-Verbindungen festgelegt

1