Mise à fin des connexions MySQL dormantes
D'innombrables connexions restent inactives pendant des périodes prolongées, jusqu'à 5 minutes, créant une préoccupation importante. Est-il possible de mettre fin ou de fermer ces connexions sans recourir au redémarrage du service MySQL ? Malgré le maintien d'un ancien système PHP qui empêche la fermeture des connexions pendant l'exécution d'une requête, les valeurs de délai d'attente dans le fichier my.cnf doivent-elles être réduites par rapport aux 8 heures par défaut ?
Nettoyage manuel
Les ID de processus peuvent être utilisés pour mettre fin manuellement aux connexions à l'aide de la commande KILL :
mysql> show full processlist; +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ | Id | User | Host | db | Command | Time | State | Info | +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ | 1193777 | TestUser12 | 192.168.1.11:3775 | www | Sleep | 25946 | | NULL | +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ mysql> kill 1193777;
Cependant, cette approche présente des inconvénients potentiels :
Nettoyage automatisé
Une solution alternative consiste à configurer le serveur MySQL avec des délais d'attente plus courts pour wait_timeout et interactive_timeout :
mysql> show variables like "%timeout%"; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | connect_timeout | 5 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 50 | | interactive_timeout | 28800 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | table_lock_wait_timeout | 50 | | wait_timeout | 28800 | +--------------------------+-------+ 9 rows in set (0.00 sec)
Ces délais d'attente peuvent être définis à l'aide des commandes suivantes :
set global wait_timeout=3; set global interactive_timeout=3;
Il est important de se rappeler que ces modifications ne concernent que les symptômes et non la cause sous-jacente de connexions persistantes. Les scripts PHP doivent être correctement configurés pour fermer les connexions une fois terminés, et le regroupement de connexions par le serveur Web doit être désactivé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!