web-dev-qa-db-fra.com

Combien de temps est «trop long» pour que les connexions MySQL se mettent en veille?

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

enter image description here Quelle doit être la durée limite de connexion avant que la connexion ne soit interrompue?

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

Remarque:

J'utilise PHP 5.2.x et symfony framework 1.2.

39
Patrick

mysqld suspendra les connexions à la base de données 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 nombres à quelque chose de raisonnable comme 600 (10 minutes) ou même 60 (1 minute). Ou, si votre application fonctionne très bien, 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 le redémarrage de mysqld):

[mysqld]
interactive_timeout=180
wait_timeout=180

Si vous ne souhaitez pas redémarrer mysql, exécutez 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.

54
RolandoMySQLDBA