資料庫宕機後,無法重連

2021-07-09 08:49:32 字數 2138 閱讀 5183

運用的c3p0的資料庫連線池

程式連線的資料出現宕機,但是沒有重連。

修改配置:

c3p0.acquireretryattempts=0

c3p0.idleconnectiontestperiod=60

c3p0最常用配置

initialpoolsize:連線池初始化時建立的連線數,default : 3,取值應在minpoolsize與maxpoolsize之間

c3p0.initialpoolsize=10

minpoolsize:連線池保持的最小連線數,default : 3

c3p0.minpoolsize=10

maxpoolsize:連線池中擁有的最大連線數,如果獲得新連線時會使連線總數超過這個值則不會再獲取新連線,而是等待其他連線釋放,所以這個值有可能會設計地很大,default : 15

c3p0.maxpoolsize=50

acquireincrement:連線池在無空閒連線可用時一次性建立的新資料庫連線數,default : 3

c3p0.acquireincrement=5

管理連線池的大小和連線的生存時間

#maxidletime:連線的最大空閒時間,如果超過這個時間,某個資料庫連線還沒有被使用,則會斷開掉這個連線。如果為0,則永遠不會斷開連線,即**此連線。default : 0 單位 s

c3p0.maxidletime=600

idleconnectiontestperiod:每900秒檢查所有連線池中的空閒連線

c3p0.idleconnectiontestperiod=900

配置preparedstatement快取

#連線池為資料來源快取的preparedstatement的總數。由於preparedstatement屬於單個connection,所以這個數量應該根據應用中平均連線數乘以每個連線的平均preparedstatement

#來計算。同時maxstatementsperconnection的配置無效。default : 0(不建議使用)

c3p0.maxstatements=500

連線池為資料來源單個connection快取的preparedstatement數,這個配置比maxstatements更有意義,因為它快取的服務物件是單個資料連線,

#如果設定的好,肯定是可以提高效能的。為0的時候不快取。default : 0(看情況而論)

c3p0.maxstatementsperconnection=30

重連相關配置

#acquireretryattempts:連線池在獲得新連線失敗時重試的次數,如果小於等於0則無限重試直至連線獲得成功。default : 30(建議使用)

c3p0.acquireretryattempts=5

acquireretrydelay:兩次連線中間隔時間,單位毫秒,連線池在獲得新連線時的間隔時間。default : 1000 單位ms(建議使用)

c3p0.acquireretrydelay=1000

breakafteracquirefailure:如果為true,則當連線獲取失敗時自動關閉資料來源,除非重新啟動應用程式。所以一般不用。default : false(不建議使用)

c3p0.breakafteracquirefailure=false

checkouttimeout:配置當連線池所有連線用完時應用程式getconnection的等待時間。為0則無限等待直至有其他連線釋放或者建立新的連線,不為0則當時間到的時候如果仍沒有獲得連線,則會丟擲sqlexception。

其實就是acquireretryattempts*acquireretrydelay。default : 0(與上面兩個,有重複,選擇其中兩個都行)

c3p0.checkouttimeout=100

其他 autocommitonclose:連線池在**資料庫連線時是否自動提交事務。如果為false,則會回滾未提交的事務,如果為true,則會自動提交事務。default : false(不建議使用)

c3p0.autocommitonclose=false

c3p0是非同步操作的,緩慢的jdbc操作通過幫助程序完成。擴充套件這些操作可以有效的提公升效能 通過多執行緒實現多個操作同時被執行。default: 3

c3p0.numhelperthreads=10

資料庫重連

4.2.10 資料庫自動重連 dbcp使用apache的物件池objectpool作為連線池的實現,在構造genericobjectpool時,會生成乙個內嵌類evictor,實現自runnable介面。如果 timebetweenevictionrunsmillis大於0,每過 timebetwe...

java中資料庫重連

當資料庫重新啟動,而導致程式無法連線,需要重啟tomcat才能重連的解決辦法 方法一 將連線池由dbcp改為c3p0 c3p0連線池本身具有資料庫重連機制 方法二 資料來源dbcp不變,只要在原來的配置上進行如下修改 1 在配置檔案中每個資料來源增加 2 在xd.properties每個資料來源配置...

mysql ping實現資料庫重連

實際工作中遇到上一次資料庫訪問和下一次資料庫訪問超過wait timeout的情況,此時就會報mysql has gone away的錯誤.利用mysql ping可以解決 1 現在資料庫抽象層加入重連功能 重新連線資料庫 private function reconnect 檢查資料庫連線是否可用...