SpringBoot Druid 配置詳解


SpringBoot Druid 配置詳解

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://${url}:${port}/${數據庫名}?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&allowMultiQueries=true&useAffectedRows=true
    username: ${username}
    password: ${password}
  druid:
      initial-size: 10 # 初始化時建立物理連接的個數。初始化發生在顯示調用init方法,或者第一次getConnection時
      min-idle: 10 # 最小連接池數量
      maxActive: 200 # 最大連接池數量
      maxWait: 60000 # 獲取連接時最大等待時間,單位毫秒。配置了maxWait之后,缺省啟用公平鎖,並發效率會有所下降,如果需要可以通過配置
      timeBetweenEvictionRunsMillis: 60000 # 關閉空閑連接的檢測時間間隔.Destroy線程會檢測連接的間隔時間,如果連接空閑時間大於等於minEvictableIdleTimeMillis則關閉物理連接。
      minEvictableIdleTimeMillis: 300000 # 連接的最小生存時間.連接保持空閑而不被驅逐的最小時間
      validationQuery: SELECT 1 FROM DUAL # 驗證數據庫服務可用性的sql.用來檢測連接是否有效的sql 因數據庫方言而差, 例如 oracle 應該寫成 SELECT 1 FROM DUAL
      testWhileIdle: true # 申請連接時檢測空閑時間,根據空閑時間再檢測連接是否有效.建議配置為true,不影響性能,並且保證安全性。申請連接的時候檢測,如果空閑時間大於timeBetweenEvictionRun
      testOnBorrow: false # 申請連接時直接檢測連接是否有效.申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。
      testOnReturn: false # 歸還連接時檢測連接是否有效.歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。
      poolPreparedStatements: true # 開啟PSCache
      maxPoolPreparedStatementPerConnectionSize: 20 #設置PSCache值
      connectionErrorRetryAttempts: 3 # 連接出錯后再嘗試連接三次
      breakAfterAcquireFailure: true # 數據庫服務宕機自動重連機制
      timeBetweenConnectErrorMillis: 300000 # 連接出錯后重試時間間隔
      asyncInit: true # 異步初始化策略
      remove-abandoned: true # 是否自動回收超時連接
      remove-abandoned-timeout: 1800 # 超時時間(以秒數為單位)
      transaction-query-timeout: 6000 # 事務超時時間
      filters: stat,wall,log4j2
      connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      web-stat-filter:
        enabled: true
        url-pattern: "/*"
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"
      stat-view-servlet:
        url-pattern: "/druid/*"
        allow:
        deny:
        reset-enable: false
        login-username: admin
        login-password: admin

druid監控數據的外部化調用

@RestController
public class DruidStatController {
    @GetMapping("/stat")
    public Object druidStat() {
        // DruidStatManagerFacade#getDataSourceStatDataList 該方法可以獲取所有數據源的監控數據
        return DruidStatManagerFacade.getInstance().getDataSourceStatDataList();
    }
}

趙小胖個人博客


免責聲明!

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



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