文章目录

  • HikariPool连接池超时
    • 超时异常错误代码
    • 可能原因
    • 源码
    • 解决策略之一

HikariPool连接池超时

超时异常错误代码

2020-04-07 10:42:43.443 [db_crawler housekeeper] WARN  com.zaxxer.hikari.pool.HikariPool - db_crawler - Thread starvation or clock leap detected (housekeeper delta=1m35s10ms834µs700ns).2020-04-07 10:43:29.210 [master housekeeper] WARN  com.zaxxer.hikari.pool.HikariPool - master - Thread starvation or clock leap detected (housekeeper delta=47s441ms246µs200ns).2020-04-07 10:44:13.808 [db_proc housekeeper] WARN  com.zaxxer.hikari.pool.HikariPool - db_proc - Thread starvation or clock leap detected (housekeeper delta=3m46s955ms555µs600ns).

可能原因

  • 要么是检测到等待连接的时间过长,造成进程饥饿;要么是检测到时钟跳动,反正最后是关闭了数据库连接。
  • 任务被什么进程阻塞

源码

public void run(){try {// refresh values in case they changed via MBeanconnectionTimeout = config.getConnectionTimeout();validationTimeout = config.getValidationTimeout();leakTaskFactory.updateLeakDetectionThreshold(config.getLeakDetectionThreshold());catalog = (config.getCatalog() != null && !config.getCatalog().equals(catalog)) ? config.getCatalog() : catalog;final long idleTimeout = config.getIdleTimeout();final long now = currentTime();// Detect retrograde time, allowing +128ms as per NTP spec.if (plusMillis(now, 128) < plusMillis(previous, HOUSEKEEPING_PERIOD_MS)) {LOGGER.warn("{} - Retrograde clock change detected (housekeeper delta={}), soft-evicting connections from pool.",poolName, elapsedDisplayString(previous, now));previous = now;softEvictConnections();return;}else if (now > plusMillis(previous, (3 * HOUSEKEEPING_PERIOD_MS) / 2)) {// No point evicting for forward clock motion, this merely accelerates connection retirement anyway---没有任何必要将时钟向前移动,这只会加速连接的退出//.....没错,就是它 在这里..................................LOGGER.warn("{} - Thread starvation or clock leap detected (housekeeper delta={}).", poolName, elapsedDisplayString(previous, now));//........................................................}previous = now;String afterPrefix = "Pool ";if (idleTimeout > 0L && config.getMinimumIdle() < config.getMaximumPoolSize()) {logPoolState("Before cleanup ");afterPrefix = "After cleanup  ";final List<PoolEntry> notInUse = connectionBag.values(STATE_NOT_IN_USE);int toRemove = notInUse.size() - config.getMinimumIdle();for (PoolEntry entry : notInUse) {if (toRemove > 0 && elapsedMillis(entry.lastAccessed, now) > idleTimeout && connectionBag.reserve(entry)) {closeConnection(entry, "(connection has passed idleTimeout)");toRemove--;}}}logPoolState(afterPrefix);fillPool(); // Try to maintain minimum connections}catch (Exception e) {LOGGER.error("Unexpected exception in housekeeping task", e);}}

解决策略之一

datasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://${ip}:3306/${数据库}?useSSL=false&characterEncoding=UTF-8username: ${username}password: ${password}hikari:auto-commit: true#空闲连接超时时长idle-timeout: 60000#连接超时时长connection-timeout: 60000#最大生命周期,0不过期max-lifetime: 0#最小空闲连接数minimum-idle: 10#最大连接数量maximum-pool-size: 10

HikariPool连接池超时问题相关推荐

  1. HikariPool连接池配置

    HikariPool连接池配置 # Hikari will use the above plus the following to setup connection pooling spring.da ...

  2. HikariPool 连接池问题

    前言:今天在一个项目运行的时候发现一个很奇怪的问题,当我有一段时间无操作之后再进行插入操作的话,就会出现HikariPool相关的报错,在此记录一下 问题 2022-02-20 13:14:04.17 ...

  3. [转].Net连接池超时注意事项

    http://blog.csdn.net/jxqvip/article/details/6738551 超时时间已到.超时时间已到,但是尚未从池中获取连接.出现这种情况可能是因为所有池连接均在使用,并 ...

  4. 连接池超时配置_HttpClient连接池的一些思考

    前言 使用apache的httpclient进行http的交互处理已经很长时间了,而httpclient实例则使用了http连接池,想必大家也没有关心过连接池的管理.事实上,通过分析httpclien ...

  5. Lettuce连接池超时问题简单记录

    使用Lettuce连接池,隔一段时间不连,再去连,就出现超时问题 问题分析定位 解决方案 方案一 方案二 问题分析定位 一直连着没问题,只要间隔一段时间不连,再去连的时候就会出现超时问题,超时几次后就 ...

  6. node mysql 连接池 超时,关于NodeJS中mysql连接池卡死问题

    最近在做毕设,遇到一个问题,就是当我多次请求数据库后就断开了数据库的连接.在网上找了很久答案,最后终于解决了.感谢大神,放上链接. 其实就是被连接池中的释放给坑了 代码中不应该用con.realeas ...

  7. springboot多数据源配置和HikariPool线程池配置

    配置类: 注意 @Primary 注解,他可以理解为优先选择,这下面的代码是一个主要连接,如果需要再加入一个连接的话复制以下代码修改name 吧@Primary注解去掉就行了. 注意spring.da ...

  8. mysql连接池泄露_一次线上故障:数据库连接池泄露后的思考

    作者:陈朗,普兰金融科技能效工程部开发工程师 一:初步排查 早上作为能效平台系统的使用高峰期,系统负载通常比其它时间段更大一些,某个时间段会有大量用户登录.当天系统开始有用户报障,发布系统线上无法构建 ...

  9. jsp获取连接池的实时连接数_PHP进阶教程-实现一个简单的MySQL连接池

    ​什么是连接池? 顾名思义,连接池就是一堆预先创建好的连接,跟容器会有点像.连接池主要是在某种需要网络连接的服务,提前把连接建立好存起来,然后存放在一个池子里面,需要用到的时候取出来用,用完之后再还回 ...

最新文章

  1. MySQL带EXISTS关键字的子查询
  2. 浅析 React Fiber
  3. 配置struts.xml时extends=struts-default会报错,原因和解决
  4. css多个属性怎么写,具有多个属性的CSS过渡简写?
  5. 一键加速去不掉加锁的_老旧油渍去不掉?这几款清洁神器帮你轻松搞定油污难题...
  6. Android ListView上拉获取下一页
  7. ROS在rviz中实时显示轨迹(nav_msgs/Path消息的使用)
  8. 淘宝天猫1688以图搜图,按图搜索商品,API接口调用展示(拍立淘API)
  9. The Tangled Web: A Guide to Securing Modern Web Applications 原版pdf
  10. 模拟器android_id,夜神模拟器链接Android studoid
  11. html页面最大化最小化设置,网页窗口最大化快捷键 改变窗口大小的快捷键是什么...
  12. 有关802.11的Beacon帧
  13. 深度学习:透过神经网络的内在灵魂与柏拉图的哲学理念
  14. java开源规则引擎比较_常用规则引擎比较分析
  15. 基因组测序中N50和N90到底指什么?
  16. 在编译前与后调教C语言binary的一种方法
  17. VQA-CP v2数据集和VQA v2数据集
  18. 编写1-100中有几个整数是9的倍数
  19. 【Visual C++】游戏开发笔记三十四 浅墨DirectX提高班之三 起承转合的艺术 Direct3D渲染五步曲
  20. win10环境下适应pip安装autobahn提示认证失败的问题

热门文章

  1. docker启动服务命令
  2. linux同步时间命令
  3. 解决go包管理代理网址无法访问:proxy.golang.org
  4. Java 实现递归算法(项目中的简单例子)
  5. 揭秘Kubernetes为啥互联网公司都在用
  6. 服务器更改系统属性,右键――服务器属性
  7. 致我们终将逝去的2018,这一年你都见证了什么?| SIU
  8. 另一个jar包引不了_分手后,男人多久会爱上另一个女人?答案只有两个字
  9. 《神奇宝贝》99%的90后都看过吧?Python让我成为了一名训练师!去吧,皮卡丘!
  10. coreDNS 常见问题及优化方案