zoukankan      html  css  js  c++  java
  • 微服务架构 ------ 插曲 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

    就这些了,只是做个记录

  • 相关阅读:
    关于MySQL死锁
    随手一记,maven打包
    js生成带logo的二维码
    java生成带logo的二维码
    关于网页中文本域高度自动适应问题,参考微信回复
    从git上拉下来的严选weex项目demo
    补装老版本的Java SE
    新MBP使用git命令时启用xcode的终端log
    电脑出现“损坏的图像”窗口提示dll没有被指定在Windows上运行如何解决
    不同浏览器隐藏默认表单样式
  • 原文地址:https://www.cnblogs.com/zmeRecord/p/11775485.html
Copyright © 2011-2022 走看看