一 簡介:今天我們來談談mysql的鏈接時間與會話關係
二 分類
mysql會話分類
1 程序鏈接session(最主要的)
2 binlog鏈接session(複製+canal消費)
3 root session
mysql超時參數(5.6,5.7增長前綴net)
interactive_timeout
wait_timeout
三 兩個超時參數的對比
1 interactive_timeout
1 默認8小時 2 針對交互式場景(手動執行,mysqldump)
2 wait_timeout
1 默認8小時 2 針對非交互式場景(jdbc,pymysql相似)java
緩存此會話連接,當連接從新被啓用時,從新刷新time統計時間,若是sleep時間超過wait_timeout就會致使出鏈接被killmysql
四 總結
1 timeout只針對空閒連接
2 非交互式場景只集成wait_timeout
3 交互式場景下interactive_timeout會覆蓋session級別wait_timeout的值
4 經過show processlist能夠觀察到創建鏈接時間
五 經典報錯
1 Lost connection to MySQL server during query
2 MySQL server has gone awaysql
3 Got an error reading communication packet緩存
問題分析 沒有正確關閉連接
如下幾種狀況
1 程序sleep時間超過wait_timeout設置時間致使被kill
2 交互式時間超過 interactive_timeout 設置時間致使被kill
3 java等程序發送數據包超過 max_allowed_packet的最大限制
4 DNS解析問題,沒有配置skip-name-reslove參數session