欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

mysql超時怎么處理 mysql sql執(zhí)行超時時間

C3p0連接mysql,超時問題

C3P0連接池連接mysql有時會出現(xiàn)如下錯誤:

創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設公司。公司專注于為企業(yè)提供信息化建設解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),微信小程序開發(fā),十多年建站對公路鉆孔機等多個行業(yè),擁有多年的網(wǎng)站營銷經(jīng)驗。

這是C3P0配置的超時時間和mysql超時時間不一致導致的,C3P0為60秒超時,mysql為30秒超時,在30-60之間的時間mysql已經(jīng)斷開連接,而C3P0還維持連接,再次發(fā)送請求就會報上面的錯誤。

解決方法:

1、修改C3P0的maxIdleTime參數(shù)為30。

2、修改mysql的wait_timeout參數(shù)為60秒。不停機狀態(tài)下進入mysql命令行,執(zhí)行set global wait_timeout=60;

mysql連接超時怎么處理

MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客戶端中用來設置讀取超時時間的參數(shù)。在 MySQL 的官方文檔中,該參數(shù)的描述是這樣的:

MYSQL_OPT_READ_TIMEOUT (argument type: unsigned int *)The timeout in seconds for each attempt to read from the server. There are retries if necessary, so the total effective timeout value is three times the option value. You can set the value so that a lost connection can be detected earlier than the TCP/IPClose_Wait_Timeout value of 10 minutes.

也就是說在需要的時候,實際的超時時間會是設定值的 3 倍。但是實際測試后發(fā)現(xiàn)實際的超時時間和設置的超時時間一致。

而具體什么時候發(fā)生三倍超時,在文檔中沒有找到。所以對 MySQL 5.7.20 的源碼進行了一些分析。

使用 GDB 調試代碼找了實際與 mysql server 通信的代碼,如下:

請點擊輸入圖片描述

其中 vio_read() 函數(shù)中,使用 recv 和 poll 來讀取報文和做讀取超時。net_should_retry() 函數(shù)只有在發(fā)生 EINTR 時才會返回 true。從這段代碼來看是符合測試結果的,并沒有對讀取進行三次重試。只有在讀取操作被系統(tǒng)中斷打斷時才會重試,但是這個重試并沒有次數(shù)限制。

從上面代碼的分析可以看出,代碼的邏輯和文檔的描述不符。于是在一頓搜索后,找到了一個 MySQL 的 BUG(Bug #31163)。該 BUG 報告了在?MySQL?5.0 中,MySQL c api 讀取的實際超時時間是設置的三倍,與現(xiàn)有文檔描述相符。于是對 MySQL 5.0.96 的代碼又進行分析。

同樣使用 GDB 找到了通信部分的代碼。這次找到了重試三次的代碼,如下:

請點擊輸入圖片描述

這個版本的 MySQL api 的讀寫超時是直接使用的 setsockopt 設置的。第一次循環(huán),在 A 點發(fā)生了第一次超時(雖然注釋寫的非阻塞,但是客戶端的連接始終是阻塞模式的)。然后在 B 點將該 socket 設置為阻塞模式,C 點這里重置 retry 次數(shù)。由于設置了 alarm 第二次以后的循環(huán)會直接進入 D 點的這個分支,并且判斷循環(huán)次數(shù)。作為客戶端時net-retry_count 始終是 1,所以重試了兩次,共計進行了 3 次 vioread 后從 E 點退出函數(shù)。

由上面的分析可知,MySQL 文檔對于該參數(shù)的描述已經(jīng)過時,現(xiàn)在的 MYSQL_OPT_READ_TIMEOUT 并不會出現(xiàn)三倍超時的問題。而 Bug #31163 中的處理結果也是將文檔中該參數(shù)的描述更新為實際讀取超時時間是設定時間的三倍。也許是 MySQL 的維護者們在后續(xù)版本更新時忘記更新文檔吧。

mysqlcommit超時

mysqlcommit超時是由于太多的請求或響應導致的。

1、調整TCP/IP連接以及MySQL數(shù)據(jù)庫相關參數(shù),以便提高MySQL的性能。

2、也可以嘗試添加一點索引來減少MySQL查詢的耗時,以及根據(jù)需要選擇合適的存儲引擎。

mysql連接超時的問題

出現(xiàn)該問題的主要原因是:Mysql server服務器超時,并且關閉了與客戶端的連接導致的。

默認情況下,如果在8小時沒有對mysql進行查詢請求的話,服務器就會自動斷開連接。可以通過修改全局變量 wait_timeout和interactive_timeout兩個變量的值來進行修改。

接著退出mysql命令行后,重載下mysql

再進來看兩個變量都已經(jīng)更改成功

摘錄自: Mysql server出現(xiàn)“Mysql server has gone away”的錯誤的解決方式

分享名稱:mysql超時怎么處理 mysql sql執(zhí)行超時時間
文章地址:http://chinadenli.net/article34/dojispe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供服務器托管虛擬主機外貿建站網(wǎng)站改版ChatGPT小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司