微服務架構 ------ 插曲 hikari連接池的配置


開胃菜:據說hikari連接池很快,快到讓另一個連接池的作者拋棄對自己連接池的維護,並且強烈推薦使用hikari

連接池目前我們項目使用的有兩個 一個是Druid , 一個是 Hikari,

其中Druid關注的是連接池中連接的監控作用,而Hikari注重的是連接池中連接的創建和回收的速度,因此Hikari會有更高的效率

Druid的配置:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        初始化連接大小
        <property name="initialSize" value="${initialSize}"></property>
        連接池最大數量
        <property name="maxActive" value="${maxActive}"></property>
        連接池最小空閑
        <property name="minIdle" value="${minIdle}"></property>
        獲取連接最大等待時間
        <property name="maxWait" value="${maxWait}"></property>
        <property name="filters" value="stat,config" />
        <property name="connectionProperties" value="config.decrypt=true" />
  </bean>

Hikari的配置:

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
        destroy-method="close">
        <!-- 無需指定,除非系統無法自動識別 -->
        <property name="jdbcUrl" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <!-- 連接只讀數據庫時配置為true, 保證安全 -->
        <property name="readOnly" value="false" />
        <!-- 等待連接池分配連接的最大時長(毫秒),超過這個時長還沒可用的連接則發生SQLException, 缺省:30秒 -->
        <property name="connectionTimeout" value="30000" />
        <!-- 一個連接idle狀態的最大時長(毫秒),超時則被釋放(retired),缺省:10分鍾 -->
        <property name="idleTimeout" value="60000" />
        <!-- 一個連接的生命時長(毫秒),超時而且沒被使用則被釋放(retired),缺省:30分鍾,建議設置比數據庫超時時長少30秒,參考MySQL wait_timeout參數(show variables like '%timeout%';) -->
        <property name="maxLifetime" value="1800000" />
        <!-- idleTimeout只有在minimumIdle設置為小於maximumPoolSize的情況下才生效 -->
        <property name="minimumIdle" value="10" />
        <!-- 連接池中允許的最大連接數。缺省值:10;推薦的公式:((core_count * 2) + effective_spindle_count) -->
        <property name="maximumPoolSize" value="15" />
    </bean>

以上兩個都是同事琢磨出來的配置,僅供參考吧。

還有一個就是Hikari在spring-boot中的配置

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://xx.xx.xx.xx:3306/xx?characterEncoding=UTF-8&useUnicode=true&autoReconnect=true&useCursorFetch=true&defaultFetchSize=100&serverTimezone=UTC
    username: root
    password: root
    hikari:
      minimum-idle: 5
      idle-timeout: 600000
      auto-commit: true
      pool-name: Hikari Pool
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: Select 1

就這些了,只是做個記錄

 


免責聲明!

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



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