mysql超時機制

mysql每次創建一個socket鏈接(connect)時,這個socket都會佔用必定內存。即便你關閉(close)鏈接時,並非真正的關閉,而是處於睡眠(sleep)狀態。mysql

當你下次再進行鏈接時,就能夠快速啓動當前處於睡眠狀態的socket。可是過多的socket會佔用大量的內存,爲解決這個問題,mysql有個超時機制。sql

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

show global variables like 'wait_timeout';socket

獲得的結果以下:server

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

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

 

wait_timeout參數的做用:當一個閒置的鏈接超過8小時後,該鏈接就會斷開。io

可是有時候須要長時間開啓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服務器關閉交互式鏈接以前等待活動的秒數

相關文章
相關標籤/搜索