MySQL automatische Anpassung der maximalen Verbindungswerte

11

Ich habe in meiner Datei my.cnf die maximale Anzahl von Verbindungen auf ca. 2000 festgelegt.

max_connections=2048

Ich habe ein Upgrade auf 5.5.20 durchgeführt und sehe jetzt die folgende Zeile im Fehlerprotokoll.

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

Warum hat MySQL den maximalen Verbindungswert auf 214 geändert?

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

Vom Betriebssystem eingeschränkte Soft- und Hard-Open-Dateien sind 1024

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

Die Anzahl der tatsächlich verwendeten maximalen Verbindungen:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+
Shantanuo
quelle
1
Versuchen Sie, die offenen ulimit-Dateien höher einzustellen, z. B. 4096.ulimit -n 4096
Hat sich das Verhalten geändert? Ich hatte die Version 5.0.77 und habe dieses Problem nicht bemerkt. Erst wenn ich auf 5.5.20 aktualisiert habe, wurden die Werte geändert!
Shantanuo
1
Ich werde nur das Offensichtliche fragen. Haben Sie bestätigt, dass das Upgrade Ihre my.cnf nicht geändert hat? Auch welches Betriebssystem? Wurde dies von einem Paketmanager wie installiert yum? Wenn ja, welches Paket?
Derek Downey

Antworten:

5

Es scheint mir in Ordnung zu sein. Sie können keine größeren max_connections haben, da open_files_limit zu niedrig ist. Für jede Verbindung öffnet MySQL mehrere Dateien. Schauen Sie hier .

Sie müssen also das Limit für geöffnete Dateien auf Ihrem Betriebssystem erhöhen, und anschließend können Sie einen höheren Wert für max_connections festlegen.

Aleksandar Vucetic
quelle
5

Dies scheint das gleiche Problem zu sein, das ich hier im Stackoverflow beantwortet habe , obwohl ich CentOS 7 & MySQL 5.6.26 verwendet habe

Sie müssen das Limit für geöffnete Dateien sowohl für den MySQL-Benutzer (in der Datei "limits.conf") als auch für den MySQL-Dienst (in der Datei "mysql.service") erhöhen.

Fügen Sie diese beiden Zeilen an /etc/security/limits.conf an

mysql hard nofile 65535
mysql soft nofile 65535

Hängen Sie diese Zeile an /usr/lib/systemd/system/mysqld.service an (im Abschnitt [service]).

LimitNOFILE=65535

Starten Sie dann endlich neu und überprüfen Sie, ob diese Fehlermeldungen aus Ihrem MySQL-Fehlerprotokoll verschwunden sind.

MNB
quelle
Die andere Lösung ist: dba.stackexchange.com/questions/32987/…
Nav
@Nav - Ja, Sie können nicht die maximale Anzahl konfigurierter Verbindungen verwenden, wenn Ihr Betriebssystem nicht zulässt, dass die entsprechende Anzahl von Dateihandles von mysqld
MNB
Außerdem benötigt Ubuntu 15.04+ einen anderen Ansatz: stackoverflow.com/questions/23977095/…
Nav
0

Dies scheint ein Fehler in der neuen mysqld zu sein. Ich hatte das gleiche Problem. Das Setzen von max_connections auf 700 hat funktioniert, aber wenn ich es auf 900 gesetzt habe, wurde es beim Start auf 214 zurückgesetzt. Wenn dies eine gezielte Änderung gewesen wäre, hätte sie auf 700 oder ähnliches gesenkt, der Wert 214 macht keinen Sinn.
Das Erhöhen des Deskriptorlimits mit ulimit -n behebt das Problem.

Bart K.
quelle