Combien de temps dure «trop longtemps» pour que MySQL Connect se repose?

38

Je me suis connecté sur mon serveur pour vérifier l'état de la base de données et j'ai remarqué SHOW PROCESSLIST;qu'il y avait un grand nombre de connexions en attente très anciennes.

entrez la description de l'image ici Quelle doit être la durée limite de connexion avant que la connexion ne soit supprimée?

Comment définir la limite de temps dans MySQL 5.0.51a-3ubuntu5.4?

Remarque:

J'utilise PHP 5.2.x et le framework Symfony 1.2.

Patrick
la source
Un blog détaillé: sforsuresh.in/how-to-delete-sleeping-processes-in-mysql
Suresh Kamrushi le

Réponses:

53

mysqld les connexions à la base de données expireront en fonction de deux options de serveur:

Les deux durent 28 800 secondes (8 heures) par défaut.

Vous pouvez définir ces options dans /etc/my.cnf

Si vos connexions sont persistantes (ouvertes via mysql_pconnect), vous pouvez réduire ces chiffres à quelque chose de raisonnable, par exemple 600 (10 minutes) ou même 60 (1 minute). Ou, si votre application fonctionne correctement, vous pouvez laisser la valeur par défaut. C'est à toi de décider.

Vous devez les définir comme suit dans my.cnf (prend effet après avoir mysqldété redémarré):

[mysqld]
interactive_timeout=180
wait_timeout=180

Si vous ne voulez pas redémarrer mysql, lancez ces deux commandes:

SET GLOBAL interactive_timeout = 180;
SET GLOBAL wait_timeout = 180;

Cela ne fermera pas les connexions déjà ouvertes. Cela entraînera la fermeture de nouvelles connexions en 180 secondes.

RolandoMySQLDBA
la source
donc dans /etc/my.cnf je voudrais juste mettre wait_timeout=180?
Patrick
@ Patrick Oui, mais vous devez définir les options interactive_timeout et wait_timeout sur 180. J'ai mis à jour ma réponse pour votre réponse.
RolandoMySQLDBA
Ce fichier peut être ailleurs dev.mysql.com/doc/refman/5.1/fr/option-files.html et ces options ne peuvent pas être expliquées (écrivez-les vous-même)
nicolallias