MySQL-Verbindungen verwalten
Verbindungen zu Ihrer IBM Cloud® Databases for MySQL -Bereitstellung verwenden Ressourcen. Berücksichtigen Sie daher, wie viele Verbindungen Sie benötigen, wenn Sie die Leistung Ihrer Bereitstellung optimieren. MySQL verwendet eine max_connections
-Einstellung, um die Anzahl der Verbindungen (und Ressourcen, die von Verbindungen verwendet werden) zu begrenzen, um zu verhindern, dass das nicht mehr steuerbare Verbindungsverhalten die Ressourcen Ihrer Bereitstellung überfordert.
Sie können den Wert für max_connections
mit Ihrem admin-Benutzer und mysql
überprüfen. Überprüfen Sie die max_connections
mit Ihrem admin
-Benutzer mit einem Befehl wie dem folgenden:
ibmclouddb=> SHOW max_connections;
max_connections
-----------------
200
(1 row)
Berechnen der Variablen MySQL max_connections
max_connections
ist ein Konfigurationsparameter in MySQL , der die maximale Anzahl gleichzeitiger Verbindungen bestimmt, die mit dem Datenbankserver hergestellt werden können.
MySQL max_connections
Basisformel
Die Grundformel für die Berechnung von max_connections
lautet:
Available RAM = Global Buffers + (Thread Buffers x `max_connections`)
Verwenden Sie einen Befehl wie den folgenden, um eine Liste der Puffer und ihrer Werte abzurufen:
SHOW VARIABLES LIKE '%buffer%';
MySQL-Verbindungslimits
Bei der Bereitstellung setzt Databases for MySQL die maximale Anzahl von Verbindungen zu Ihrer MySQL-Datenbank auf 200. Erhöhen Sie diesen Wert, indem Sie die MySQL -Konfiguration ändern.
Lassen Sie einige Connections verfügbar, da einige von ihnen intern reserviert sind, um den Status und die Integrität Ihrer Datenbank zu erhalten.
Begrenzen Sie die Anzahl der gleichzeitigen Verbindungen für ein Konto ohne Administratorberechtigung. Wenn Sie beispielsweise max_user_connections=3
festlegen, wird das Benutzerkonto auf maximal drei gleichzeitige Verbindungen
beschränkt.
Das Überschreiten des Verbindungsgrenzwerts für Ihre Implementierung wirkt sich negativ auf den Zustand Ihrer Datenbank aus und führt dazu, dass diese für Ihre Anwendungen nicht erreichbar ist. Wenn das Verbindungslimit erreicht ist, führen alle Versuche, eine neue Verbindung zu starten, zu einem Fehler.
FATAL: remaining connection slots are reserved for
non-replication superuser connections
Greifen Sie mit dem Benutzer admin
, mysql
und SHOW GLOBAL STATUS
auf Informationen zu Verbindungen zu Ihrer Implementierung zu.
mysql> SHOW GLOBAL STATUS;
+-----------------------------------+------------+
| Variable_name | Value |
+-----------------------------------+------------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Bytes_received | 155372598 |
| Bytes_sent | 1176560426 |
...
| Connections | 30023 |
| Created_tmp_disk_tables | 0 |
| Created_tmp_files | 3 |
| Created_tmp_tables | 2 |
...
| Threads_created | 217 |
| Threads_running | 88 |
| Uptime | 1389872 |
+-----------------------------------+------------+
Um festzustellen, wo die Verbindungen hergestellt werden, untergliedern Sie die Verbindungen nach Datenbank mithilfe der Variablen threads_connected
mit einem Befehl wie dem folgenden:
mysql> show status where `variable_name` = 'Threads_connected';
Verwenden Sie den Befehl SHOW PROCESSLIST
, um Ihre Verbindungen weiter zu untersuchen:
SHOW [FULL] PROCESSLIST;
MySQL -Verbindungen beenden
Jede Verbindung zu mysqld, dem MySQL -Server, wird in einem separaten Thread ausgeführt und kann mit einer processlist_id
-Anweisung mit einem Befehl
wie dem folgenden gestoppt werden:
KILL [CONNECTION | QUERY] processlist_id
KILL CONNECTION
beendet die Verbindung, die demprocesslist_id
zugeordnet ist, nach dem Stoppen aller Anweisungen, die die Verbindung ausführt.KILL QUERY
beendet die Anweisung, die die Verbindung ausführt, lässt aber die Verbindung selbst intakt.
Weitere Informationen finden Sie im Handbuch MySQL Reference Manual KILL Statement.
MySQL -Verbindungen beenden
Wenn Ihre Implementierung das Verbindungslimit erreicht oder Sie Probleme haben, eine Verbindung zu Ihrer Implementierung herzustellen, und vermuten, dass eine hohe Anzahl von Verbindungen ein Problem ist, trennen (oder beenden) Sie alle Verbindungen zu Ihrer Implementierung.
In der Benutzerschnittstelle gibt es auf der Registerkarte Einstellungen eine Schaltfläche für End Connections
für Ihre Bereitstellung. Gehen Sie mit Vorsicht vor, da hierbei alle Verbindungen zu Ihrer Bereitstellung
unterbrochen werden.
Beenden Sie in der Befehlszeilenschnittstelle Verbindungen zur Bereitstellung mit einem Befehl wie dem folgenden:
ibmcloud cdb deployment-kill-connections <deployment name or CRN>
Sie können auch die Cloud Databases API verwenden, um die Operation zum Beenden aller Verbindungen auszuführen.
MySQL -Verbindungspooling
Eine Möglichkeit, das Überschreiten des Verbindungslimits zu verhindern und sicherzustellen, dass die Verbindungen von Ihren Anwendungen effizient gehandhabt werden, ist das Verbindungspooling.
Mit MySQL Connectors können Sie MySQL -Anweisungen aus einer anderen Sprache oder Umgebung, einschließlich ODBC, Java (JDBC), C + +, Python, PHP, Perl, Rubyund nativen C-und eingebetteten MySQL -Instanzen, verbinden und ausführen.
Beispielsweise kann das Verbindungspooling mit MySQL Connector/J die Leistung verbessern und gleichzeitig die Gesamtnutzung verringern. MySQL Connector/Python ermöglicht auch die Optimierung mithilfe des Moduls mysql.connector.pooling
.