Je vois que beaucoup de connexions sont ouvertes et restent inactives pendant longtemps, disons 5 minutes.
Existe-t-il une solution pour terminer/fermer le serveur sans redémarrer le service mysql?
Je conserve un ancien système PHP et je ne peux pas fermer les connexions établies pour exécuter la requête.
Dois-je réduire les valeurs de délai d'expiration dans mon fichier.cnf ces valeurs par défaut à 8 heures?
# default 28800 seconds
interactive_timeout=60
wait_timeout=60
Vous pouvez tuer le processid.
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;
Mais:
Ou vous configurez votre serveur mysql en définissant un délai plus court sur 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)
Fixé avec:
set global wait_timeout=3;
set global interactive_timeout=3;
(et également défini dans votre fichier de configuration, pour le redémarrage de votre serveur)
Mais vous traitez les symptômes plutôt que la cause sous-jacente - pourquoi les connexions sont-elles ouvertes? Si le script PHP terminé, ne devrait-il pas se fermer? Assurez-vous que votre serveur Web n'utilise pas le pool de connexions ...
Je ne vois aucun problème, sauf si vous ne les gérez pas à l'aide d'un pool de connexions.
Si vous utilisez un pool de connexions, ces connexions sont réutilisées au lieu d'initier de nouvelles connexions. Donc, fondamentalement, laisser des connexions ouvertes et les réutiliser est moins problématique que de les recréer à chaque fois.