mysql超時怎么設(shè)置 mysql設(shè)置執(zhí)行sql超時時間

C3p0連接mysql,超時問題

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

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供永興企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為永興眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。

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

解決方法:

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

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

如何配置MySQL數(shù)據(jù)庫超時設(shè)置

大規(guī)模多線程操作事務(wù)的時候,有時候打開一個鏈接,會進(jìn)行等待,這時候如果數(shù)據(jù)庫的超時時間設(shè)置的過短,就可能會出現(xiàn),數(shù)據(jù)鏈接自動被釋放,當(dāng)然設(shè)置過大也不好,慢SQL或其他因素引起的鏈接過長,導(dǎo)致整個系統(tǒng)被拖慢,甚至掛掉。SO,適當(dāng)?shù)脑O(shè)置超時時間。設(shè)置方法:

SHOW GLOBAL VARIABLES LIKE '%timeout%'

SET GLOBAL wait_timeout=10000

網(wǎng)頁鏈接

MySql執(zhí)行超時怎么設(shè)置

MYSQL_OPT_READ_TIMEOUT 是 MySQL c api 客戶端中用來設(shè)置讀取超時時間的參數(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.

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

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

使用 GDB 調(diào)試代碼找了實(shí)際與 mysql server 通信的代碼,如下:

請點(diǎn)擊輸入圖片描述

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

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

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

請點(diǎn)擊輸入圖片描述

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

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

mysql怎么設(shè)置超時時間

  MySQL超時時間設(shè)置:使用Druid可以配置。

具體設(shè)置方法,代碼如下:

!-- 超過時間限制是否回收 --

property name="removeAbandoned" value="true" /

!-- 超時時間;單位為秒。180秒=3分鐘 --

property name="removeAbandonedTimeout" value="180" /

!-- 關(guān)閉abanded連接時輸出錯誤日志 --

property name="logAbandoned" value="true" /

文章題目:mysql超時怎么設(shè)置 mysql設(shè)置執(zhí)行sql超時時間
本文URL:http://m.kartarina.com/article30/hjgipo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)面包屑導(dǎo)航商城網(wǎng)站網(wǎng)站導(dǎo)航關(guān)鍵詞優(yōu)化網(wǎng)站收錄

廣告

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

成都seo排名網(wǎng)站優(yōu)化
主站蜘蛛池模板: 久久久久亚洲AV无码去区首 | 亚洲日韩国产AV无码无码精品| 不卡无码人妻一区三区音频| 夜夜添无码一区二区三区| 久久亚洲精品成人av无码网站| 无码成人AAAAA毛片| 无码中文字幕日韩专区视频| 蕾丝av无码专区在线观看| 亚洲av无码片在线观看| 国产做无码视频在线观看浪潮| 成人免费无码大片a毛片软件| 亚洲国产精品无码久久一线 | 内射人妻无码色AV天堂| 人妻少妇伦在线无码专区视频| h无码动漫在线观看| 无码人妻aⅴ一区二区三区| 精品深夜AV无码一区二区| 午夜人性色福利无码视频在线观看| 天堂无码久久综合东京热| 九九在线中文字幕无码| 欲色aV无码一区二区人妻| 99精品人妻无码专区在线视频区 | 午夜亚洲av永久无码精品| 亚洲成av人无码亚洲成av人| 无码专区AAAAAA免费视频| 久久国产加勒比精品无码| 中日精品无码一本二本三本| 日韩精品无码Av一区二区| 国产成人无码精品久久久小说| 内射人妻无码色AV天堂| 无码视频一区二区三区| 无码人妻精一区二区三区| 色综合久久久无码中文字幕波多| 无码人妻啪啪一区二区| 午夜无码性爽快影院6080| 精品无码成人网站久久久久久| 黄色成人网站免费无码av| 国产成人无码区免费A∨视频网站| 无码欧精品亚洲日韩一区夜夜嗨 | 国产日产欧洲无码视频无遮挡| 国产精品无码一区二区在线观一 |