druid 配置


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 看到朋友注意一下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM