78 votes

Comment tuer les connexions MySQL

Je suis en train de créer un site Web avec MySQL. J'utilise TOAD pour MySQL et soudain, je ne peux pas me connecter à la base de données car j'obtiens une erreur :

"Trop de connections"

Y a-t-il un moyen dans Toad for MySQL d'afficher les connexions existantes pour pouvoir les tuer ou simplement fermer toutes les connexions ensemble ?

61voto

zloctb Points 531
mysql> SHOW PROCESSLIST;
+-----+------+-----------------+------+---------+------+-------+---------------+
| Id  | User | Host            | db   | Command | Time | State | Info      |
+-----+------+-----------------+------+---------+------+-------+----------------+
| 143 | root | localhost:61179 | cds  | Query   |    0 | init  | SHOW PROCESSLIST |
| 192 | root | localhost:53793 | cds  | Sleep   |    4 |       | NULL      |
+-----+------+-----------------+------+---------+------+-------+----------------+
2 rows in set (0.00 sec)

mysql> KILL 192;
Query OK, 0 rows affected (0.00 sec)

UTILISATEUR 192 :

 mysql> SELECT * FROM exept;
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

mysql> SELECT * FROM exept;
ERROR 2013 (HY000): Lost connection to MySQL server during query

33voto

Moby Duck Points 199

Bien que vous ne puissiez pas supprimer toutes les connexions ouvertes avec une seule commande, vous pouvez créer un ensemble de requêtes pour le faire pour vous s'il y en a trop à faire à la main.

Cet exemple crée une série de KILL <pid>; des requêtes pour tous some_user des connexions « de 192.168.1.1 à my_db .

 SELECT 
CONCAT('KILL ', id, ';') 
FROM INFORMATION_SCHEMA.PROCESSLIST 
WHERE `User` = 'some_user' 
AND `Host` = '192.168.1.1'
AND `db` = 'my_db';

14voto

zero8 Points 713

Je recommanderais de vérifier les connexions pour montrer que la connexion de fil maximale est

 show variables like "max_connections";

échantillon

 +-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 13  |
+-----------------+-------+
1 row in set

Puis augmentez-le par exemple

 set global max_connections = 500;

5voto

user1812597 Points 51

Comme mentionné ci-dessus, il n'y a pas de commande spéciale pour le faire. Cependant, si toutes ces connexions sont inactives, utiliser des « tables de vidage ; » est capable de libérer toutes ces connexions qui ne sont pas actives.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X