mysql的timeout


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就行了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM