mysql的timeout
很多時候我們連接mysql會在timeout這里跌倒,這里明確下mysql的timeout:
下面是獲取timeout的變量:
mysql> show global variables like "%timeout%";
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 3600 |
| wait_timeout | 28800 |
+-----------------------------+----------+
12 rows in set (0.04 sec)
如果看session的timeout,也是這些參數設置。
- connect_timeout
當一個連接上來,在三次握手的時候出現錯誤,mysql服務器會等待一段時間客戶端進行重新連接,connect_timeout就是服務端等待重連的時間了。
- delayed_insert_timeout
insert delay操作延遲的秒數,這里不是insert操作,而是insert delayed,延遲插入。關於insert delayed,參考
- innodb_flush_log_at_timeout
這個是5.6中才出現的,是InnoDB特有的參數,每次日志刷新時間。
- innodb_lock_wait_timeout
innodb鎖行的時間,就是鎖創建最長存在的時間,當然並不是說行鎖了一下就不釋放了。
- innodb_rollback_on_timeout
在innodb中,當事務中的最后一個請求超時的時候,就會回滾這個事務
- interactive_timeout
對於不活躍的連接,當時間超過這個數值的時候,才關閉連接。
- lock_wait_timeout
獲取元數據鎖的超時時間。這個適合用於除了系統表之外的所有表。
- net_read_timeout
- net_write_timeout
這兩個表示數據庫發送網絡包和接受網絡包的超時時間。
- rpl_stop_slave_timeout
控制stop slave 的執行時間,在重放一個大的事務的時候,突然執行stop slave,命令 stop slave會執行很久,這個時候可能產生死鎖或阻塞,嚴重影響性能,mysql 5.6可以通過rpl_stop_slave_timeout參數控制stop slave 的執行時間
- slave_net_timeout
這是Slave判斷主機是否掛掉的超時設置,在設定時間內依然沒有獲取到Master的回應就認為Master掛掉了
- wait_timeout
交互式和非交互式鏈接的超時設置,防止客戶端長時間鏈接數據庫,什么都不做處於sleep狀態,強制關閉長時間的sleep鏈接。默認情況先兩值的都為28800(8h),一般情況下將兩值都設置為1000s就行了