J'ai ouvert trop de connexions à MySQL et je ne peux plus y accéder. Il est indiqué "Too many connections". Comment puis-je fermer toutes ces connexions ? Je ne sais pas non plus comment le redémarrer, ce qui pourrait résoudre le problème.
Réponses
Trop de publicités?J'ai répondu à cette question sur le mass killing DB Connections dans la rubrique DBA StackExchange en mai 2011.
Qu'est-ce qui peut permettre à une personne de se connecter à mysql dans des conditions aussi stressantes ? La réponse est très simple : NE PAS DONNER LE SUPER PRIVILEGE A TOUT LE MONDE ! !!
Pourquoi le SUPER Privilège ?
Según la Documentation MySQL :
Le privilège SUPER permet à un compte d'utiliser ou mysqladmin kill pour tuer des threads appartenant à d'autres comptes (vous (vous pouvez toujours tuer vos propres threads), PURGE BINARY LOGS, les changements de les changements de configuration en utilisant SET GLOBAL pour modifier les variables globales du système, la fonction mysqladmin debug, activer ou désactiver la journalisation, effectuer des effectuer des mises à jour même si la variable système read_only est activée, démarrer et arrêter la réplication sur le serveur esclave. démarrer et arrêter la réplication sur le serveur esclave dans l'attribut DEFINER des programmes stockés et des vues, et permet de se se connecter (une fois) même si la limite de connexion contrôlée par la variable système max_connections est atteinte.
De ce fait, les connexions régulières des clients ne devraient pas bénéficier du privilège SUPER. Lorsque le nombre de connexions à la base de données atteint = max_connections Une seule connexion supplémentaire sera autorisée et cette connexion doit avoir le privilège SUPER. Si tout le monde et sa grand-mère ont le privilège SUPER, tous les paris sont ouverts et personne ne peut se connecter.
Certaines applications web signalent toujours "trop de connexions" si elles ne peuvent pas se connecter à la base de données. Si vous obtenez cette erreur même après un redémarrage de MySQL, l'erreur réelle est probablement "pas de connexion". Essayez de vous connecter à MySQL d'une autre manière, en ligne de commande, avec phpmydmin ou avec un autre site piloté par MySQL sur le même serveur.
Si vous pouvez vous connecter à MySQL par d'autres moyens, vérifiez la chaîne de connexion de votre site web (la partie qui donne le nom d'utilisateur et le mot de passe pour MySQL) puis connectez-vous avec ces informations d'identification, quelque chose a peut-être été modifié mais n'a pas été mis à jour dans le script.
Si vous ne pouvez pas vous connecter à MySQL et que le redémarrage de MySQL n'a pas résolu le problème, vous devez consulter votre journal des événements (vous avez indiqué qu'il s'agissait d'un serveur Windows dans un commentaire). Redémarrer le serveur est un raccourci qui permet d'écarter de nombreux problèmes, vérifiez également que vous n'êtes pas à court d'espace disque.
J'ai résolu le problème ! C'était une erreur dans le code C#, où j'ai accidentellement bouclé le "connection.Open()". -.-
La classe 1 a dit "hé classe 2, ouvre la connexion !" et la classe 2 a répondu "connexion ouverte ! maintenant ouvre une connexion, classe 1 ! Ensuite, la classe 1 a ouvert une connexion et a dit à la classe 2 "ouvre aussi une connexion", et ainsi de suite...
Je suis désolée pour la bêtise, je n'avais pas réalisé cela -.-
3 jours bloqués (Y)
Santé !
- Réponses précédentes
- Plus de réponses