interactive_timeout = 28800
wait_timeout = 28800
#這兩個參數默認都是28800s,即8個小時;
interactive_timeout指的是mysql在關閉一個交互的連接之前所要等待的秒數
wait_timeout指的是mysql在關閉一個非交互的連接之前所要等待的秒數
通過mysql客戶端連接數據庫是交互式連接,通過jdbc連接數據庫是非交互式連接
(1)session級別修改interactive_timeout=10,wait_timeout默認不變。
mysql>set session interactive_timeout=10;
mysql>show variables like '%timeout%';
| interactive_timeout | 10 |
| wait_timeout | 28800
等10s后,此會話連接沒有斷開。
(2)session級別修改wait_timeout =10,interactive_timeout默認不變。
mysql>set session wait_timeout=10;
mysql>show variables like '%timeout%';
| interactive_timeout | 28800 |
| wait_timeout | 10
等10s后,此會話斷開,隨便輸入一條命令報錯,然后重新連接,但是此時連接id號發生變化了,并且wait_timeout會話設置失效,恢復默認值。
mysql>show processlist;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 5
Current database: *** NONE ***
(3)global級別修改interactive_timeout=10,wait_timeout默認不變。
mysql>set global interactive_timeout=10;
mysql>quit
[root@Darren1 ~]# mysql -uroot -p147258
mysql>show variables like '%timeout%';
| interactive_timeout | 10 |
| wait_timeout | 10
等10s后,此會話斷開,隨便輸入一條命令報錯,然后重新連接,但是此時連接id號發生變化了,
mysql>show processlist;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 9
Current database: *** NONE ***
(4)global級別修改wait_timeout=10,interactive_timeout 默認不變。
mysql>set wait_timeout=10;
mysql>quit
[root@Darren1 ~]# mysql -uroot -p147258
mysql>show variables like '%timeout%';
| interactive_timeout | 28800 |
| wait_timeout | 28800
設置無效。
總結:
1.控制連接最大空閑時長的是wait_timeout參數。
2.對于交互式連接,類似于mysql客戶端連接,wait_timeout的值繼承自服務器端全局變量interactive_timeout。
對于非交互式連接,類似于jdbc連接,wait_timeout的值繼承自服務器端全局變量wait_timeout(未演示)。
3.判斷一個連接的空閑時間,可通過show processlist輸出中Sleep狀態的時間
如:會話19為本地show processlist的id號,id18為另外一個空閑會話,可以看出這個會話已經空閑了61s
mysql>show processlist;
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+------+---------+------+----------+------------------+
| 18 | root | localhost | NULL | Sleep | 61 | | NULL |
| 19 | root | localhost | NULL | Query | 0 | starting | show processlist |
+----+------+-----------+------+---------+------+----------+------------------+
4.根據生產庫經驗,把這個兩個參數的設置相同,都為5分鐘:
interactive_timeout = 300
wait_timeout = 300
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。