[Mysql/MariaDB] 清除及設定 MySQL 的死連接

[Mysql/MariaDB] 清除及設定 MySQL 的死連接

[Mysql/MariaDB] 清除及設定 MySQL 的死連接

資料來源: http://n.sfs.tw/content/index/10657

01.查看目前的連線

mysql> SHOW PROCESSLIST;
+-------+------+-----------------+------+---------+------+-------+------------------+
| Id    | User | Host            | db   | Command | Time | State | Info             |
+-------+------+-----------------+------+---------+------+-------+------------------+
| 14850 | axer | localhost       | NULL | Query   |    0 | NULL  | SHOW PROCESSLIST |
| 14852 | note | localhost:62258 | note | Sleep   |    0 |       | NULL             |
+-------+------+-----------------+------+---------+------+-------+------------------+
2 rows in set (0.00 sec)

02.刪除連線

mysql> kill 14852;

03.查看及修改等待結束的時間

mysql> show variables like '%timeout%';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| connect_timeout             | 10       |
| delayed_insert_timeout      | 300      |
| innodb_flush_log_at_timeout | 1        |
| innodb_lock_wait_timeout    | 50       |
| innodb_rollback_on_timeout  | OFF      |
| interactive_timeout         | 28800    |
| lock_wait_timeout           | 31536000 |
| net_read_timeout            | 30       |
| net_write_timeout           | 60       |
| rpl_stop_slave_timeout      | 31536000 |
| slave_net_timeout           | 3600     |
| wait_timeout                | 28800    |
+-----------------------------+----------+
12 rows in set (0.00 sec)

04.執行期修改等待秒數,設定為180秒

mysql> set wait_timeout=180;

05.永久設定,修改 /etc/my.cnf

[mysqld]
wait_timeout=180

重啟後生效

3 thoughts on “[Mysql/MariaDB] 清除及設定 MySQL 的死連接

  1. Mysql/MariaDB 最大連線數

    https://www.itread01.com/p/1158932.html

    mysql> show variables like ‘max_connections’;(查可以看當前的最大連線數)

    msyql> set global max_connections=1000;(設定最大連線數為1000,可以再次檢視是否設定成功)

    [mysqld]
    max_connections = 1000

  2. https://www.cnblogs.com/youxin/p/5300954.html
    mysql> SHOW PROCESSLIST; 的state列, mysql列出的狀態主要有以下幾種:

    Checking table
     正在檢查數據表(這是自動的)。
    Closing tables
     正在將表中修改的數據刷新到磁盤中,同時正在關閉已經用完的表。這是一個很快的操作,如果不是這樣的話,就應該確認磁盤空間是否已經滿了或者磁盤是否正處於重負中。
    Connect Out
     複製從服務器正在連接主服務器。
    Copying to tmp table on disk
     由於臨時結果集大於tmp_table_size,正在將臨時表從內存存儲轉為磁盤存儲以此節省內存。
    Creating tmp table
     正在創建臨時表以存放部分查詢結果。
    deleting from main table
     服務器正在執行多表刪除中的第一部分,剛刪除第一個表。
    deleting from reference tables
     服務器正在執行多表刪除中的第二部分,正在刪除其他表的記錄。
    Flushing tables
     正在執行FLUSH TABLES,等待其他線程關閉數據表。
    Killed
     發送了一個kill請求給某線程,那麼這個線程將會檢查kill標誌位,同時會放棄下一個kill請求。MySQL會在每次的主循環中檢查kill標誌位,不過有些情況下該線程可能會過一小段才能死掉。如果該線程程被其他線程鎖住了,那麼kill請求會在鎖釋放時馬上生效。
    Locked
     被其他查詢鎖住了。
    Sending data
     正在處理SELECT查詢的記錄,同時正在把結果發送給客戶端。
    Sorting for group
     正在為GROUP BY做排序。
     Sorting for order
     正在為ORDER BY做排序。
    Opening tables
     這個過程應該會很快,除非受到其他因素的干擾。例如,在執ALTER TABLE或LOCK TABLE語句行完以前,數據表無法被其他線程打開。正嘗試打開一個表。
    Removing duplicates
     正在執行一個SELECT DISTINCT方式的查詢,但是MySQL無法在前一個階段優化掉那些重複的記錄。因此,MySQL需要再次去掉重複的記錄,然後再把結果發送給客戶端。
    Reopen table
     獲得了對一個表的鎖,但是必須在表結構修改之後才能獲得這個鎖。已經釋放鎖,關閉數據表,正嘗試重新打開數據表。
    Repair by sorting
     修復指令正在排序以創建索引。
    Repair with keycache
     修復指令正在利用索引緩存一個一個地創建新索引。它會比Repair by sorting慢些。
    Searching rows for update
     正在講符合條件的記錄找出來以備更新。它必須在UPDATE要修改相關的記錄之前就完成了。
    Sleeping
     正在等待客戶端發送新請求.
    System lock
     正在等待取得一個外部的系統鎖。如果當前沒有運行多個mysqld服務器同時請求同一個表,那麼可以通過增加–skip-external-locking參數來禁止外部系統鎖。
    Upgrading lock
     INSERT DELAYED正在嘗試取得一個鎖表以插入新記錄。
    Updating
     正在搜索匹配的記錄,並且修改它們。
    User Lock
     正在等待GET_LOCK()。

  3. https://www.cnblogs.com/youxin/p/5300954.html

    mysql查看當前連接數

    命令: show processlist;
    如果是root帳號,你能看到所有用戶的當前連接。如果是其它普通帳號,只能看到自己佔用的連接。
    show processlist;只列出前100條,如果想全列出請使用show full processlist;

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *