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.
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.
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.