最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

C3P0連接池配置解決MySQL連接的空閑時(shí)間超過(guò)8小時(shí)后自動(dòng)斷開(kāi)連接_MySQL

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 19:27:34
文檔

C3P0連接池配置解決MySQL連接的空閑時(shí)間超過(guò)8小時(shí)后自動(dòng)斷開(kāi)連接_MySQL

C3P0連接池配置解決MySQL連接的空閑時(shí)間超過(guò)8小時(shí)后自動(dòng)斷開(kāi)連接_MySQL:相信使用MySQL作為數(shù)據(jù)庫(kù)的程序猿們大多數(shù)都會(huì)遇到這個(gè)問(wèn)題,我也不例外,網(wǎng)上有很多解決方案,出現(xiàn)這個(gè)問(wèn)題的原因我就不說(shuō)明了,網(wǎng)上都解釋得很清楚,大概就是MySQL 的默認(rèn)設(shè)置下,當(dāng)一個(gè)連接的空閑時(shí)間超過(guò)8小時(shí)后,MySQL 就會(huì)斷開(kāi)該連接,而 c3p0 連
推薦度:
導(dǎo)讀C3P0連接池配置解決MySQL連接的空閑時(shí)間超過(guò)8小時(shí)后自動(dòng)斷開(kāi)連接_MySQL:相信使用MySQL作為數(shù)據(jù)庫(kù)的程序猿們大多數(shù)都會(huì)遇到這個(gè)問(wèn)題,我也不例外,網(wǎng)上有很多解決方案,出現(xiàn)這個(gè)問(wèn)題的原因我就不說(shuō)明了,網(wǎng)上都解釋得很清楚,大概就是MySQL 的默認(rèn)設(shè)置下,當(dāng)一個(gè)連接的空閑時(shí)間超過(guò)8小時(shí)后,MySQL 就會(huì)斷開(kāi)該連接,而 c3p0 連
相信使用MySQL作為數(shù)據(jù)庫(kù)的程序猿們大多數(shù)都會(huì)遇到這個(gè)問(wèn)題,我也不例外,網(wǎng)上有很多解決方案,出現(xiàn)這個(gè)問(wèn)題的原因我就不說(shuō)明了,網(wǎng)上都解釋得很清楚,大概就是MySQL 的默認(rèn)設(shè)置下,當(dāng)一個(gè)連接的空閑時(shí)間超過(guò)8小時(shí)后,MySQL 就會(huì)斷開(kāi)該連接,而 c3p0 連接池則以為該被斷開(kāi)的連接依然有效。在這種情況下,如果客戶端代碼向 c3p0 連接池請(qǐng)求連接的話,連接池就會(huì)把已經(jīng)失效的連接返回給客戶端,客戶端在使用該失效連接的時(shí)候即拋出異常。

通過(guò)自己親自對(duì)各種方案進(jìn)行測(cè)試,目前我認(rèn)為能解決這個(gè)問(wèn)題的最優(yōu)辦法是(直接貼代碼):

  
以上代碼只是C3P0配置的一部分,其他配置連接、驅(qū)動(dòng)等就不貼出來(lái)了,你們懂的大笑。


那么如何測(cè)試這個(gè)方案是否解決了問(wèn)題?

第一、將MySQL的空閑時(shí)間設(shè)置短一些。設(shè)置方法:找到MySQL安裝目錄下的my.ini文件,用記事本或UE或notepad++工具打開(kāi),在[mysqld]節(jié)點(diǎn)中加入以下設(shè)置:

interactive_timeout=120
wait_timeout=120

設(shè)置為2分鐘,網(wǎng)上有些只提出了設(shè)置wait_timeout即可,但我在測(cè)試時(shí),這個(gè)設(shè)置無(wú)效,仍然是8小時(shí),我就將interactive_timeout也設(shè)置為2分鐘,我目前不知道為什么,希望有知道能分享一下微笑。設(shè)置完畢,重啟MySQL服務(wù)。

打開(kāi)MySQL命了窗口,輸入show variables like '%timeout%';回車(chē),即可查看是否設(shè)置生效,如果未生效,還是28800,則檢查是否同時(shí)也設(shè)置了interactive_timeout。


第二、在C3P0的配置中,我們注釋掉上面貼出的配置代碼,啟動(dòng)程序,然后打開(kāi)自己編寫(xiě)的系統(tǒng)或網(wǎng)站等,2分鐘后隨便做一個(gè)與數(shù)據(jù)庫(kù)有關(guān)的操作,沒(méi)錯(cuò),就會(huì)出現(xiàn)下面的異常:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

The last packet successfully received from the server was 661,156 milliseconds ago. The last packet sent successfully to the server was 661,157 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.;

SQL []; The last packet successfully received from the server was 661,156 milliseconds ago. The last packet sent successfully to the server was 661,157 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.;

nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 661,156 milliseconds ago. The last packet sent successfully to the server was 661,157 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

這個(gè)異常是不是很熟悉,不解釋,你們懂的。


第三、加上上面C3P0的配置,注意,由于設(shè)置了MySQL的空閑時(shí)間是2分鐘,因此我們要將配置文件中idleConnectionTestPeriod的value設(shè)置為1分鐘,即60,不管設(shè)置多長(zhǎng),總之要小于MySQL的空閑時(shí)間。最后重啟程序,再次測(cè)試,OK,問(wèn)題解決了。


大功告成!?。?!文字描述得不是很美,程序猿吧,懂的。


總結(jié):解決問(wèn)題的關(guān)鍵在于找到原因,只要了解其他連接池的配置,相信也能很快解決這個(gè)問(wèn)題。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

C3P0連接池配置解決MySQL連接的空閑時(shí)間超過(guò)8小時(shí)后自動(dòng)斷開(kāi)連接_MySQL

C3P0連接池配置解決MySQL連接的空閑時(shí)間超過(guò)8小時(shí)后自動(dòng)斷開(kāi)連接_MySQL:相信使用MySQL作為數(shù)據(jù)庫(kù)的程序猿們大多數(shù)都會(huì)遇到這個(gè)問(wèn)題,我也不例外,網(wǎng)上有很多解決方案,出現(xiàn)這個(gè)問(wèn)題的原因我就不說(shuō)明了,網(wǎng)上都解釋得很清楚,大概就是MySQL 的默認(rèn)設(shè)置下,當(dāng)一個(gè)連接的空閑時(shí)間超過(guò)8小時(shí)后,MySQL 就會(huì)斷開(kāi)該連接,而 c3p0 連
推薦度:
標(biāo)簽: 連接 斷開(kāi) mysql
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專題
Top