摘要:
现象 idea版本: IntelliJ IDEA 2021.1.1 (Ultimate Edition) Build #IU-211.7142.45, built on April 30, 2021 lombok版本 1.18.16 编译的时候报错: java: You aren't using a 阅读全文
摘要:
背景 核心服务、并发较高,查询接接口最高几万qps 对停顿比较敏感 jvm par new + cms、 堆分配较大,老年代6g、old gc水位 3G左右 ygc几分钟一次、full gc 十天一次 分库分表,对应多个数据库连接池对象 问题发现 stw告警,full gc stw超过500ms 查 阅读全文
摘要:
校验时机 从 hikariPool#getConnection() 拿到的连接,如果空闲超过 500ms则要检查它的有效性 PoolBase#isConnectionActive() public Connection getConnection(final long hardTimeout) th 阅读全文
摘要:
它是为了实现比 LinkedBlockingQueue 和 LinkedTransferQueue 更高的性能而特别定制的,根据连接池的特殊场景做了一些性能优化 容器类定义 public class ConcurrentBag<T extends IConcurrentBagEntry> imple 阅读全文
摘要:
houseKeeper 定时检查空闲连接,对于超过 minimumIdle 的那部分db连接,如果空闲时长大于 idleTimeout 则关闭 softEvictConnection() db连接从创建后超过最大存活时长 maxLifeTime 的时候 softEvictConnection() 驱 阅读全文
摘要:
数据库连接池的最小连接为什么是Idle语义 druid的maxEvictableIdleTimeMillis 和 hikariCP 的 maxLifetime HikariCP HikariDataSource初识 HikariPool连接池初始化 Hikari申请db连接的过程 Hikari创建连 阅读全文
摘要:
HikariDataSource#getConnection → HikariPool#getConnection public Connection getConnection(final long hardTimeout) throws SQLException { suspendResumeL 阅读全文
摘要:
在连接关闭 closeConnection() 的时候,会调用 fillPool() 进行填充到 minimumIdle 个连接 HikariPool连接池初始化 在连接池初始化时,会开启HouseKeeper 去定时检查,也会调用 fillPool() 去填充,但是如果 minimumIdle为0 阅读全文
摘要:
HikariCP 是面向 jdbc api 的数据库连接池,所以它肯定实现了 javax.sql.DataSource 接口 public class HikariDataSource extends HikariConfig implements DataSource, Closeable Hik 阅读全文
摘要:
HouseKeeper 和 HikariPool#addBagItem 在需要新增db连接的时候,都是往负责连接创建的线程池 addConnectionExecutor 丢PoolEntryCreator implements Callable<Boolean> 任务 PoolEntryCreato 阅读全文