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服務器關閉交互式鏈接以前等待活動的秒數