首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >日志警告:检测到线程饥饿或时钟跳跃(管家delta=springHikariConnectionPool)

日志警告:检测到线程饥饿或时钟跳跃(管家delta=springHikariConnectionPool)
EN

Stack Overflow用户
提问于 2016-08-01 16:35:59
回答 7查看 137.2K关注 0票数 92

我使用的是HikariCP 2.4.6,在Tomcat 8启动时,我收到一条警告消息:

代码语言:javascript
运行
复制
01-Aug-2016 11:18:01.599 INFO [RMI TCP Connection(4)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log Initializing Spring FrameworkServlet 'Spring MVC Dispatcher Servlet'
[2016-08-01 11:18:01,654] Artifact blueberry:war exploded: Artifact is deployed successfully
[2016-08-01 11:18:01,655] Artifact blueberry:war exploded: Deploy took 33,985 milliseconds
Aug 01 2016 11:26:52.802 AM [DEV] (HikariPool.java:614)
WARN : com.zaxxer.hikari.pool.HikariPool - 9m13s102ms - Thread starvation or clock leap detected (housekeeper delta=springHikariConnectionPool).

我没有看到任何其他错误或问题读/写从数据库。这是值得关注的事情吗?我试过四处寻找,但没有运气。

我们还在使用Hibernate 4.3.8. MySQL 5上的MySQL和Spring4.1.0.RELEASE的MySQL 5.1.39连接器,我们正在努力升级到Hibernate 5,并将查看这是否会消失,但不知道这是否重要。

EN

Stack Overflow用户

回答已采纳

发布于 2016-08-01 16:40:35

有一个很好的磨耗,为什么时钟跳跃检测可能会合法地发生。引用布雷特·伍尔里奇的外部链接:

这在管家线程上运行,该线程每30秒执行一次。如果您在Mac上,clockSource是System.currentTimeMillis(),任何其他平台clockSource都是System.nanoTime()。这两者在理论上都是单调增加的,但各种因素都会影响到这一点,例如NTP服务器。大多数OSes用于处理反向NTP时间调整,以保留前向时间流的错觉。 这段代码的意思是,如果时间向后移动(现在<以前),或者如果时间“跃进”了两个以上的管家期(超过60秒),那么可能会发生一些奇怪的事情。 有几件事可能会发生:

  1. 您可以在虚拟容器(VMWare、AWS等)中运行。由于某种原因,在保持时间向前流动的错觉方面做得特别差。
  2. 因为其他事情发生在管家线程中--特别是关闭空闲连接--由于某种原因,关闭连接可能会阻塞管家线程两个以上的管家期(60秒)。
  3. 服务器太忙了,所有CPU都被固定在一起,导致线程饥饿,这使得管家线程无法运行两个以上的内务管理周期。

考虑到这些,也许您可以提供更多的上下文。

编辑:注意这是基于HikariCP 2.4.1代码的。确保您正在运行最最新的版本可用。

(最新代码中的警告语句也更新了参数。)

票数 88
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38703876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档