jenkins上的HikariCP清理池循环

时间:2015-08-28 14:11:55

标签: java hibernate jenkins spring-boot hikaricp

您好stackoverflow社区,

我的jenkins和hikaricp有一个非常讨厌的问题。

提出问题: 我有一个使用hikariDataSource的spring启动应用程序。开发时它工作正常,所有测试运行本地没有任何问题。 但是如果同一个项目在jenkins中作为ci作业运行,这与我在开发机器上执行的操作完全相同,它会在清理连接池时停留一段时间:

  

2015-08-28 15:51:52.090 DEBUG 8234 --- [l HikariPool-0]] com.zaxxer.hikari.pool.HikariPool:清理池之前HikariPool-0统计数据(总计= 10,活跃= 0 ,idle = 10,waiting = 0)   2015-08-28 15:51:52.091 DEBUG 8234 --- [l HikariPool-0)] com.zaxxer.hikari.pool.HikariPool:清理池后HikariPool-0统计数据(总计= 10,活动= 0,空闲= 10,等待= 0)   2015-08-28 15:52:22.090 DEBUG 8234 --- [l HikariPool-0)] com.zaxxer.hikari.pool.HikariPool:清理池之前HikariPool-0统计数据(总计= 10,活动= 0,空闲= 10,等待= 0)   2015-08-28 15:52:22.091 DEBUG 8234 --- [l HikariPool-0)] com.zaxxer.hikari.pool.HikariPool:清理池后HikariPool-0统计数据(总计= 10,活动= 0,空闲= 10,等待= 0)

这是我几分钟后得到的,然后测试继续。

在测试环境中,我使用h2内存数据库。

在google和github上搜索了几个小时之后,我没有更接近解决方案。

我使用Spring Boot 1.2.5,HikariCP 2.4.1,Hibernate 4.3.10.final。

Spring Boot项目的配置基于jhipster的配置。

非常感谢您提供的帮助以及解决问题的更多信息。

2 个答案:

答案 0 :(得分:0)

我以为你说游泳池挂了你的考试。但是再读一遍,我不认为这是正在发生的事情。只要它正在运行,HikariCP将每30秒记录一次清理统计信息。因此,如果另一个线程挂起测试,您可能会看到它们继续记录。

这些日志的存在并不表示HikariCP已挂起。根据该日志中的所有指示,根本没有使用连接。

如果你可以以某种方式获得一个线程转储,而测试似乎挂起,你可以看到线程正在做什么,并可能抓住真正的罪魁祸首。

答案 1 :(得分:0)

感谢@brettw我可以解决这个问题。日志确实让我走错了方向,认为hikaricp做错了什么。

我们长时间运行的构建的根本原因是熵源,嵌入式tomcat使用它来构建SecureRandom实例。

根据这篇文章:Spring Boot Actuator application won't start on Ubuntu VPS我们尝试将源设置为/dev/./urandom,这也不起作用。

最后我们安装了haveged,正如@starmer建议的那样。现在它工作得很好。建立起来非常快。

非常感谢@brettw指出我正确的方向!