Gestion des connexions MySQL
Les connexions à votre déploiement IBM Cloud® Databases for MySQL utilisent des ressources. Vous devez donc prendre en compte le nombre de connexions dont vous avez besoin lors de l'optimisation des performances de votre déploiement. MySQL utilise
un paramètre max_connections
pour limiter le nombre de connexions (et de ressources utilisées par les connexions) afin d'éviter que le comportement des connexions en boucle indéfinie n'entraîne une surcharge des ressources de votre
déploiement.
Vous pouvez vérifier la valeur de max_connections
avec votre administrateur et mysql
.
Vérifiez le fichier max_connections
avec votre utilisateur admin
à l'aide d'une commande telle que:
ibmclouddb=> SHOW max_connections;
max_connections
-----------------
200
(1 row)
Comment calculer la variable MySQL max_connections
max_connections
est un paramètre de configuration dans MySQL qui détermine le nombre maximal de connexions simultanées pouvant être établies avec le serveur de base de données.
MySQL max_connections
formule de base
La formule de base pour le calcul de max_connections
est la suivante:
Available RAM = Global Buffers + (Thread Buffers x `max_connections`)
Pour extraire une liste de mémoires tampon et leurs valeurs, utilisez une commande telle que la suivante:
SHOW VARIABLES LIKE '%buffer%';
Limites de connexion MySQL
À la disposition, Databases for MySQL définit le nombre maximal de connexions à votre base de données MySQL vers 200. Augmentez cette valeur en modifiant la configuration de MySQL.
Laissez certaines connexions disponibles, car un certain nombre d'entre elles sont réservées à l'interne pour maintenir l'état et l'intégrité de votre base de données.
Limitez le nombre de connexions simultanées pour tout compte non administrateur. Par exemple, le paramètre max_user_connections=3
limite le compte utilisateur à un maximum de trois connexions simultanées.
Le dépassement de la limite de connexion pour votre déploiement aura un impact négatif sur la santé de votre base de données et rendra celle-ci inaccessible par vos applications. Une fois la limite de connexion atteinte, toute tentative de démarrage d'une nouvelle connexion entraîne une erreur.
FATAL: remaining connection slots are reserved for
non-replication superuser connections
Accédez aux informations relatives aux connexions à votre déploiement avec l'utilisateur admin
, mysql
et SHOW GLOBAL STATUS
.
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 |
+-----------------------------------+------------+
Pour déterminer l'emplacement des connexions, décomposent les connexions par base de données à l'aide de la variable threads_connected
, à l'aide d'une commande telle que la suivante:
mysql> show status where `variable_name` = 'Threads_connected';
Pour examiner plus en détail vos connexions, utilisez la commande SHOW PROCESSLIST
:
SHOW [FULL] PROCESSLIST;
Arrêt de MySQL Connections
Chaque connexion à mysqld, le serveur MySQL , s'exécute dans une unité d'exécution distincte et peut être arrêtée à l'aide d'une instruction processlist_id
, à l'aide d'une commande telle que la suivante:
KILL [CONNECTION | QUERY] processlist_id
KILL CONNECTION
met fin à la connexion associée àprocesslist_id
, après avoir arrêté toute instruction que la connexion est en cours d'exécution.KILL QUERY
met fin à l'instruction que la connexion est en cours d'exécution, mais laisse la connexion intacte.
Pour plus d'informations, voir MySQL Reference Manual KILL Statement.
Fin des connexions MySQL
Si votre déploiement atteint la limite de connexion ou que vous rencontrez des difficultés pour vous connecter à votre déploiement et que vous suspectez qu'un nombre élevé de connexions est un problème, déconnectez (ou arrêtez) toutes les connexions à votre déploiement.
Dans l'interface utilisateur, dans l'onglet Paramètres , vous accédez à End Connections
à votre déploiement. Soyez prudent car cela entraînera l'interruption de toutes les connexions établies avec votre déploiement.
Dans l'interface de ligne de commande, terminez les connexions au déploiement à l'aide d'une commande telle que la suivante:
ibmcloud cdb deployment-kill-connections <deployment name or CRN>
Vous pouvez également utiliser l'APICloud Databases pour exécuter toutes les opérations d'arrêt de connexions.
MySQL -Regroupement de connexions
Le regroupement de connexions est l'un des moyens permettant de prévenir le dépassement du nombre limite de connexions et de garantir que les connexions à partir de vos applications sont gérées efficacement.
Les connecteursMySQL vous permettent de connecter et d'exécuter des instructions MySQL à partir d'un autre langage ou d'un autre environnement, y compris ODBC, Java (JDBC), C + +, Python, PHP, Perl, Ruby, et des instances MySQL natives et intégrées.
Par exemple, le regroupement de connexions avec Connecteur MySQL /J peut augmenter les performances tout en réduisant l'utilisation globale. MySQL Connector/Python permet également l'optimisation à l'aide du module mysql.connector.pooling
.