1. 程式人生 > >mysql超時機制

mysql超時機制

ble 作用 erro 超過 即使 過多 base variable 活動

mysql每次建立一個socket連接(connect)時,這個socket都會占用一定內存。即使你關閉(close)連接時,並不是真正的關閉,而是處於睡眠(sleep)狀態。

當你下次再進行連接時,就可以快速啟動當前處於睡眠狀態的socket。但是過多的socket會占用大量的內存,為解決這個問題,mysql有個超時機制。

你可以使用這條語句查看當前設置的超時時間長度:

show global variables like ‘wait_timeout‘;

得到的結果如下:

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 28800 |
+---------------+-------+
1 row in set (0.00 sec)

默認是28800秒,也就是8小時

wait_timeout參數的作用:當一個閑置的連接超過8小時後,該連接就會斷開。

但是有時候需要長時間開啟mysql連接,就需要改變這個參數的值。根據機器的硬件選擇合適的參數值。

有兩種方法可以改變這個參數的值:

1.通過語句改變這個參數的值。這中方法不需要重啟mysql,但會先斷開所有當前連接,然後重新連接。

語句:set global wait_timeout = 100;執行結果:

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 3
Current database: *** NONE ***

Query OK, 0 rows affected (1.13 sec)

最後一行表示已經更改成功。

註:這個方法是局部性質的。當你下次重新啟動mysql服務器時,執行show global variables like ‘wait_timeout‘;時,仍然是修改前的值。

2.通過修改配置文件

在mysql的安裝目錄下,有個mysql.ini文件

添加如下的設置:

[mysqlld]

wait_timeout = 100

interactive_timeout = 100

然後重啟mysql服務,更改就會生效。

註:這個參數的含義:

wait_timeout:mysql服務器關閉非交互式連接之前等待活動的秒數

interactive_timeout:mysql服務器關閉交互式連接之前等待活動的秒數

mysql超時機制