MySQL數據庫是目前Web應用中使用最廣泛的關系型數據庫之一,但是在使用MySQL過程中,我們可能會遇到某些問題。其中,一個比較常見的問題是數據庫中大量的time_wait自連接。
time_wait是TCP連接的一種狀態(tài),在MySQL中,這種狀態(tài)的連接通常是由于長時間處于idle狀態(tài)而導致的。而time_wait自連接就是在MySQL中的一個客戶端連接由于未能被正確的關閉,留下了大量的time_wait連接,最終導致整個MySQL服務不穩(wěn)定。
//示例代碼 $ mysql -h192.168.1.1 -uroot -p Welcome to the MySQL monitor... mysql>status; -------------- mysql Ver 14.14 Distrib 5.7.21, for Win64 (x86_64) Connection id: 1 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.21 MySQL Community Server (GPL) Protocol version: 10 Connection: 192.168.1.1 via TCP/IP Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: cp936 Conn. characterset: cp936 TCP port: 3306 Uptime: 6 hours 42 min 41 sec Threads: 6 Questions: 12205414 Slow queries: 0 Opens: 720 Flush tables: 1 Open tables: 139 Queries per second avg: 48.007 --------------
如果你遇到了這種情況。你可以嘗試通過KILL命令,手動殺掉這些time_wait連接。但即使是這種情況,也需要謹慎操作,因為MySQL在關閉TCP連接時并不會立刻終止該連接,而是留出一定的時間供該連接進行必要的收尾工作。
推薦的方法是,先確認該連接已經失效,再關閉TCP連接。可以通過檢查該連接的狀態(tài)、是否還有活動請求、以及是否有大量待發(fā)送的數據包等方式來判斷該連接是否已經失效。
上一篇mysql大量刪除