之前資料來源經常斷,總之有時候乙個請求會等比較久的時間才會響應,還以為是druid有bug,感覺應該不至於啊,記得幾年前搭建過乙個專案,當時也是資料來源經常斷,是因為mysql8小時機制,當時的原因是,連線池中的部分連線沒有有效釋放,這次吸取上次教訓,特地每隔五分鐘,重新整理一下連線,可還是存在斷連的情況,為此很崩潰,起初我還以為是資料庫連線池設定的太小導致。後不甘心,檢視了mysql的配置,才發現,我們的運維是「神」一樣的隊友啊,互動式連線超時竟然設定為兩分鐘。。。。
故為同道中人提供解決問題的思路,別像我似的趟這麼多坑:
1.mysql8小時斷連
2.資料庫連線池過小
3.資料庫連線沒有釋放,連線洩露
4.配置連線池中連線存在時長,配置每隔一段時間啟用一下連線,保持連線活性
5.看看是否有像我們運維一樣的人才,檢視資料庫配置
6.是否啟用慢查詢
提供druid配置指南:注意,不同資料庫中,sql語句不一樣,mysql是select 1
druid 引數
配置引數
預設值遊戲服設定的值
引數說明
initialsize04
初始化連線數量
minidle04
最小空閒連線數
maxactive88
最大併發連線數
maxwait
-1l60000
獲取連線時最大等待時間,單位毫秒。配置了maxwait之後,
預設啟用公平鎖,併發效率會有所下降,
如果需要可以通過配置useunfairlock屬性為true使用非公平鎖。
timebetweenevictionrunsmillis
60000
60000
配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
destroy執行緒會檢測連線的間隔時間
minevictableidletimemillis
1800000
1800000
配置乙個連線在池中最小生存的時間,單位是毫秒
validationquery
null
select 1
用來檢測連線是否有效的sql,要求是乙個查詢語句
testonborrow
false
false
申請連線時執行validationquery檢測連線是否有效,做了這個配置會降低效能。
testonreturn
false
false
歸還連線時執行validationquery檢測連線是否有效,做了這個配置會降低效能
testwhileidle
true
true
建議配置為true,不影響效能,並且保證安全性。 申請連線的時候檢測,如果
空閒時間大於 timebetweenevictionrunsmillis, 執行validationquery檢測連線是否有效。
poolpreparedstatements
false
true
false 是否快取preparedstatement,也就是pscache。
pscache對支援游標的資料庫效能提公升巨大,比如說oracle。
在mysql5.5以下的版本中沒有pscache功能,建議關閉掉。
5.5及以上版本有pscache,建議開啟。
maxpoolpreparedstatementperconnectionsize
10100
要啟用pscache,必須配置大於0,當大於0時,
poolpreparedstatements自動觸發修改為true。
單個connnection獨享乙個statement cache,也就是說maxopenpreparedstatements是針對單個
Druid 資料庫連線
druid是阿里巴巴開源平台上乙個資料庫連線池實現,它結合了c3p0 dbcp proxool等db池的優點,同時加入了日誌監控,可以很好的監控db池連線和sql的執 況,可以說是針對監控而生的db連線池 據說是目前最好的連線池,不知道速度有沒有bonecp快 和其它連線池一樣druid的datas...
druid資料庫連線池
一 池的理解 二 druid的特點 1.druid的誕生時間在dbcp,c3p0 hibernate 之後,吸取優點,彌補了不足。2.druid在效能方面也相當優秀。3.druid允許檢視或者以日誌的方式列印出sql語句。對查錯和除錯非常直觀。4.druid的核心,監控而生 對sql執行監控非常精細...
Druid資料庫連線池
連線池的好處 1 資源重用 2.更快的系統反應速度 3.新的資源分配手段 4.統一的連線管理,避免資料庫連線洩漏 datasource 通常被稱為資料來源,它包含連線池和連線池管理兩個部分。datasource用來取代drivermanager來獲取connection,獲取速度快,同時可以大幅度提...