spring: datasource: # druid連接池 type: com.alibaba.druid.pool.DruidDataSource #數據庫驅動 driver: com.mysql.jdbc.Driver #最大連接池數量 max-active: 20 #初始化時建立物理連接的個數。初始化發生在顯示調用init方法,或者第一次getConnection時 initial-size: 10 # 獲取連接時最大等待時間,單位毫秒。配置了maxWait之后,缺省啟用公平鎖, # 並發效率會有所下降,如果需要可以通過配置useUnfairLock屬性為true使用非公平鎖。 max-wait: 60000 #最小連接池數量 min-idle: 5 #有兩個含義: #1: Destroy線程會檢測連接的間隔時間 #2: testWhileIdle的判斷依據,詳細看testWhileIdle屬性的說明 time-between-eviction-runs-millis: 60000 #配置一個連接在池中最小生存的時間,單位是毫秒 min-evictable-idle-time-millis: 180000 #用來檢測連接是否有效的sql,要求是一個查詢語句。如果validationQuery為null,testOnBorrow、testOnReturn、testWhileIdle都不會其作用。 validation-query: select 'x' #連接有效性檢查的超時時間 1 秒 validation-query-timeout: 1 #申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。 test-on-borrow: false #設置從連接池獲取連接時是否檢查連接有效性,true時,如果連接空閑時間超過minEvictableIdleTimeMillis進行檢查,否則不檢查;false時,不檢查 test-while-idle: true #歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能 test-on-return: false #是否緩存preparedStatement,也就是PSCache。PSCache對支持游標的數據庫性能提升巨大,比如說oracle。在mysql下建議關閉。 pool-prepared-statements: true #要啟用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改為true。在Druid中, # 不會存在Oracle下PSCache占用內存過多的問題,可以把這個數值配置大一些,比如說100 max-open-prepared-statements: 20 #數據庫鏈接超過3分鍾開始關閉空閑連接 秒為單位 remove-abandoned-timeout: 1800 #對於長時間不使用的連接強制關閉 remove-abandoned: true #打開后,增強timeBetweenEvictionRunsMillis的周期性連接檢查,minIdle內的空閑連接, # 每次檢查強制驗證連接有效性. 參考:https://github.com/alibaba/druid/wiki/KeepAlive_cn keep-alive: true # 通過connectProperties屬性來打開mergeSql功能;慢SQL記錄 connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 #是否超時關閉連接 默認為false ,若為true 就算數據庫恢復連接,也無法連接上 break-after-acquire-failure: false #設置獲取連接出錯時的自動重連次數 connection-error-retry-attempts: 1 #設置獲取連接時的重試次數,-1為不重試 not-full-fimeout-retry-count: 2 #重連間隔時間 單位毫秒 acquire-retry-delay: 10000 # 設置獲取連接出錯時是否馬上返回錯誤,true為馬上返回 fail-fast: true #屬性類型是字符串,通過別名的方式配置擴展插件,常用的插件有: #監控統計用的filter:stat日志用的filter:log4j防御sql注入的filter:wall filters: stat,wall
自己在工作中 總結的的 druid 配置算是比較全的了,為了 解決 數據連接超時 向前台提示 服務器超時信息 幾乎逛了 整個 druid配置文件
問題原因:當出現網絡原因時,druid 會不對發送請求,試圖連接數據庫,就會造成sockt 阻塞。
解決原因:百度,看源碼(一點注釋都沒用,靠猜的),重新配置 DruidDataSource
經過不懈努力,面向百度編程的功底深厚,也解決此問題。
注意:后台任然會不斷嘗試連接數據庫,能解決(在配置中),但是不介意,也許會造成恢復網絡后依然連接上。
效果圖:
感謝 以下 大佬提供的數據,
https://blog.csdn.net/Swollow_/article/details/83624585 特別感謝
https://www.jianshu.com/p/d7323afab808 特別感謝
http://www.iigrowing.cn/?p=7551
https://www.cnblogs.com/jianzhixuan/p/6923216.html
https://blog.csdn.net/qq_34359363/article/details/72763491?locationNum=3&fps=1
由於我貼的是公司代碼,所以上面沒用 url,user,password 看到朋友注意一下