Beenden ruhender MySQL-Verbindungen
Unzählige Verbindungen bleiben für längere Zeiträume, bis zu 5 Minuten, inaktiv, was ein erhebliches Problem darstellt. Ist es möglich, diese Verbindungen zu beenden oder zu schließen, ohne auf einen Neustart des MySQL-Dienstes zurückgreifen zu müssen? Sollten trotz der Beibehaltung eines alten PHP-Systems, das das Schließen von Verbindungen während der Abfrageausführung verhindert, die Zeitüberschreitungswerte in der Datei my.cnf von den standardmäßigen 8 Stunden reduziert werden?
Manuelle Bereinigung
Prozess-IDs können verwendet werden, um Verbindungen mithilfe des KILL-Befehls manuell zu beenden:
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;
Dieser Ansatz hat jedoch potenzielle Nachteile:
Automatische Reinigung
Eine alternative Lösung besteht darin, den MySQL-Server mit kürzeren Timeouts zu konfigurieren für wait_timeout und 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)
Diese Zeitüberschreitungen können mit den folgenden Befehlen festgelegt werden:
set global wait_timeout=3; set global interactive_timeout=3;
Es ist wichtig zu bedenken, dass diese Änderungen nur die Symptome und nicht die zugrunde liegende Ursache angehen dauerhafte Verbindungen. PHP-Skripte sollten ordnungsgemäß konfiguriert sein, um Verbindungen nach Abschluss zu schließen, und das Verbindungs-Pooling durch den Webserver sollte deaktiviert sein.
Das obige ist der detaillierte Inhalt vonKann ich ruhende MySQL-Verbindungen beenden, ohne den Dienst neu zu starten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!