SHOW PROCESSLIST de commande MySQL: le sommeil
Quand je lance le SHOW PROCESSLIST des bases de données MySQL, j'obtiens ce résultat:
mysql> show full processlist;
+--------+------+-----------+--------+---------+-------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+--------+------+-----------+-------+---------+-------+-------+-----------------------+
| 411665 | root | localhost | somedb | Sleep | 11388 | | NULL |
| 412109 | root | localhost | somedb | Query | 0 | NULL | show full processlist |
+--------+------+-----------+-------+---------+-------+-------+------------------------+
Je voudrais savoir le processus de "Sommeil", c'est sous son Commandement. Ça veut dire quoi? Pourquoi il est en cours d'exécution depuis un long moment et montrant NULL? Il est prise de la base de données lent, et quand je tue le processus, puis il fonctionne normalement. S'il vous plaît aider moi.
- il ne fait rien, il est là, il "attend" pour une connexion.
- pouvons-nous trouver la requête est en attente de connexion ? mon que fait un certain sens ? Et pourquoi il est en train de ralentir ma base de données ?
- Est-il vraiment le ralentissement de votre base de données vers le bas? son de ne rien faire. C'est en fait une connexion c'est de ne rien faire - par exemple, peut-être que vous vous êtes connecté sur un autre terminal d'un moment de retour, et n'a pas débrancher etc.
- ce n'est pas une requête en attente d'une connexion. ses une connexion pointeur d'attente pour le délai de résiliation. et il n'a pas d'impact sur les performances. La seule chose que son utilisation est quelques octets, comme à chaque connexion. Vraiment le pire des cas sa à l'aide d'une connexion de votre piscine, si vous souhaitez connecter plusieurs fois par le biais de la console de client et il suffit de fermer le client sans fermer la connexion vous pouvez utiliser toutes vos connexions et d'attendre le délai d'attente de pouvoir vous connecter de nouveau... mais c'est très rare 🙂
- je vous remercie beaucoup.
- J'ai le même problème. Pourquoi tu dis mais c'est très rare ? Et quels sont les paramètres qui est lié à la config délai de couchage connexions dans mon.cnf?
- voir stackoverflow.com/questions/2407732/... et dba.stackexchange.com/questions/1558/...
- Faire de cette réponse. Vous aurez mon upvote.
- fait ..........
- geek, vous devez les accepter une réponse, probablement Rufin", si elle résolu votre question ...
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas une requête en attente d'une connexion, c'est un pointeur de connexion en attente pour le délai de résiliation.
Il n'a pas d'impact sur les performances. La seule chose, c'est à l'aide de quelques octets, comme à chaque connexion.
Vraiment le pire des cas: C'est à l'aide d'une connexion de votre piscine; Si vous souhaitez connecter plusieurs fois par le biais de la console de client et il suffit de fermer le client sans fermer la connexion, vous pouvez utiliser l'ensemble de vos connexions et d'attendre le délai d'attente de pouvoir vous connecter de nouveau... mais c'est très rare 🙂
Voir MySql Proccesslist rempli de "Sommeil" Entrées menant à un "Trop grand nombre de Connexions"? et https://dba.stackexchange.com/questions/1558/how-long-is-too-long-for-mysql-connections-to-sleep pour plus d'informations.
"Sommeil" de l'état des connexions sont le plus souvent créés par le code qui maintient les connexions persistantes à la base de données.
Cela pourrait inclure des pools de connexion créé par l'application de cadres, ou côté client de la base de données outils d'administration.
Comme mentionné ci-dessus dans les commentaires, il n'y a vraiment aucune raison de s'inquiéter à propos de ces connexions... sauf si bien sûr vous n'avez aucune idée de l'endroit où la connexion est en venir.
(Mise en garde: Si vous avez une longue liste de ces types de connexions, il pourrait y avoir un danger de manquer de connexions simultanées.)
Sommeil sens que ce thread est de ne rien faire.
Le temps est trop grand, car anthor fil de requête,mais pas déconnecter du serveur,
par défaut wait_timeout=28800;vous pouvez définir des valeurs plus petites,par exemple 10.
aussi, vous pouvez tuer le fil.
J'ai trouvé cette réponse ici: https://dba.stackexchange.com/questions/1558. En bref à l'aide de la suite (ou au sein de mon.cnf) va supprimer le problème de délai d'attente.
SET GLOBAL interactive_timeout = 180;
SET GLOBAL wait_timeout = 180;
Cela permet les connexions à la fin si ils restent dans un État de sommeil pendant 3 minutes (ou ce que vous définissez).