MySQL Timeout解析
connect_timeout、interactive_timeout、wait_timeout、net_read_timeout、net_write_timeout、
[@more@]
“And God said, Let there be network: and there was timeout”
在使用MySQL的過程中,你是否遇到了眾多讓人百思不得其解的Timeout?
那麼這些Timeout之後,到底是程式碼問題,還是不為人知的匠心獨具?
本期Out-man,講述我們們MySQL DBA自己的Timeout。
先看一下比較常見的Timeout引數和相關解釋:
connect_timeout
The number of seconds that the mysqld server waits for a connect packet before responding with Bad handshake.
interactive_timeout
The number of seconds the server waits for activity on an interactive connection before closing it.
wait_timeout
The number of seconds the server waits for activity on a noninteractive connection before closing it.
net_read_timeout
The number of seconds to wait for more data from a connection before aborting the read.
net_write_timeout
The number of seconds to wait for a block to be written to a connection before aborting the write.
從以上解釋可以看出,connect_timeout在獲取連線階段(authenticate)起作用,interactive_timeout和wait_timeout在連線空閒階段(sleep)起作用,而net_read_timeout和net_write_timeout則是在連線繁忙階段(query)起作用。
獲取MySQL連線是多次握手的結果,除了使用者名稱和密碼的匹配校驗外,還有IP->HOST->DNS->IP驗證,任何一步都可能因為網路問題導致執行緒阻塞。為了防止執行緒浪費在不必要的校驗等待上,超過connect_timeout的連線請求將會被拒絕。
即使沒有網路問題,也不能允許客戶端一直佔用連線。對於保持sleep狀態超過了wait_timeout(或interactive_timeout,取決於CLIENT_INTERACTIVE標誌)的客戶端,MySQL會主動斷開連線。
即使連線沒有處於sleep狀態,即客戶端忙於計算或者儲存資料,MySQL也選擇了有條件的等待。在資料包的分發過程中,客戶端可能來不及響應(傳送、接收、或者處理資料包太慢)。為了保證連線不被浪費在無盡的等待中,MySQL也會選擇有條件(net_read_timeout和net_write_timeout)地主動斷開連線。
這麼多Timeout足以證明MySQL是多麼樂於斷開連線。而樂於斷開連線的背後,主要是為了防止服務端共享資源被某客戶端(mysql、mysqldump、頁面程式等)一直佔用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/143526/viewspace-1042436/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql timeoutMySql
- 【Mysql】MySQL中interactive_timeout和wait_timeout的區別MySqlAI
- mysql的wait_timeout和interactive_timeoutMySqlAI
- 【MySQL】淺析interactive_timeout和wait_timeoutMySqlAI
- MySQL的timeout那點事MySql
- MySQL之wait_timeout和interactive_timeout引數MySqlAI
- Mysql引數解釋---wait_timeout、interactive_timeoutMySqlAI
- MySQL中wait_timeout的坑MySqlAI
- MySQL更新卡住報錯lock wait timeoutMySqlAI
- MySQL:引數wait_timeout和interactive_timeout以及空閒超時的實現MySqlAI
- mysql, Lock wait timeout exceeded; try restarting 解決MySqlAIREST
- MySQL:connect_timeout引數簡單記錄MySql
- mysql interactive_timeout 設定不當一例MySql
- MySQL:網路斷開後執行的事務怎麼處理(read_timeout/write_timeout))MySql
- Database TimeoutDatabase
- MySql報錯:Lock wait timeout exceeded: try restadina transactionMySqlAIREST
- SQLNET.RECV_TIMEOUT & SQLNET.SEND_TIMEOUTSQL
- MySQL連線超時相關的兩個引數interactive_timeout和wait_timeout的區別和解釋MySqlAI
- Timeout expired. The timeout period elapsed prior to completion of the operation or the server is noServer
- 鎖:innodb_lock_wait_timeout和 innodb_rollback_on_timeout?AI
- XMLHttpRequest timeout 屬性XMLHTTP
- IPC Send timeout detected
- Linux timeout命令Linux
- mysql count()的使用解析MySql
- Mysql三類log解析MySql
- MySQL MHA原始碼解析MySql原始碼
- MySQL binlog日期解析MySql
- MySQL Handler變數解析MySql變數
- 設定mysql 事務鎖超時時間 innodb_lock_wait_timeoutMySqlAI
- angularjs之$timeout指令AngularJS
- yarn socket connection timeoutYarn
- MySQL:排序(filesort)詳細解析MySql排序
- MySQL慢日誌全解析MySql
- MySQL優化之索引解析MySql優化索引
- MySQL執行計劃解析MySql
- MySQL連線原理解析MySql
- mysql日誌詳細解析MySql
- INBOUND_CONNECT_TIMEOUT與SQLNET.INBOUND_CONNECT_TIMEOUT小結SQL