Rumah > pangkalan data > tutorial mysql > Bolehkah saya menamatkan sambungan MySQL yang tidak aktif tanpa memulakan semula perkhidmatan?

Bolehkah saya menamatkan sambungan MySQL yang tidak aktif tanpa memulakan semula perkhidmatan?

DDD
Lepaskan: 2024-11-10 04:57:03
asal
375 orang telah melayarinya

Can I terminate dormant MySQL connections without restarting the service?

Menamatkan Sambungan MySQL Dorman

Sambungan yang tidak terkira banyaknya kekal melahu untuk tempoh yang lama, sehingga 5 minit, menimbulkan kebimbangan yang ketara. Adakah mungkin untuk menamatkan atau menutup sambungan ini tanpa menggunakan perkhidmatan MySQL dimulakan semula? Walaupun mengekalkan sistem PHP lama yang menghalang sambungan penutupan semasa pelaksanaan pertanyaan, adakah nilai tamat masa dalam fail my.cnf perlu dikurangkan daripada 8 jam lalai?

Pembersihan Manual

ID Proses boleh digunakan untuk menamatkan sambungan secara manual menggunakan arahan 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;
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini mempunyai potensi kelemahan:

  • Aplikasi PHP mungkin menghadapi ralat.
  • Jika sumber sambungan tidak terhad, sebaiknya biarkan sahaja.

Pembersihan Automatik

Penyelesaian alternatif melibatkan konfigurasi pelayan MySQL dengan tamat masa yang lebih singkat untuk tunggu_masa tamat dan interaktif_masa tamat:

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)
Salin selepas log masuk

Tamat masa ini boleh ditetapkan menggunakan arahan berikut:

set global wait_timeout=3;
set global interactive_timeout=3;
Salin selepas log masuk

Adalah penting untuk diingat bahawa perubahan ini hanya menangani simptom dan bukan punca asas sambungan berterusan. Skrip PHP harus dikonfigurasikan dengan betul untuk menutup sambungan setelah selesai, dan pengumpulan sambungan oleh pelayan web harus dilumpuhkan.

Atas ialah kandungan terperinci Bolehkah saya menamatkan sambungan MySQL yang tidak aktif tanpa memulakan semula perkhidmatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan