当前位置: 首页 > 知识库问答 >
问题:

jenkins上的HikariCP清理池循环

莫选
2023-03-14

大家好,我的社区,

我和我的詹金斯和希卡里普有一个非常恼人的问题。

正确地看待这个问题:我有一个使用hikariDataSource的Spring Boot应用程序。它在开发时工作良好,所有测试都在本地运行,没有任何问题。但是,如果同一个项目作为ci作业在jenkins中运行,这与我在开发机器上执行的操作完全相同,那么它会在清理连接池时卡住一段时间:

2015-08-28 15:51:52.090调试8234---[l Hikaripol-0]com。扎克塞尔。希卡里。水塘HikariPool:清理池之前HikariPool-0统计信息(总计=10,活动=0,空闲=10,等待=0)2015-08-28 15:51:52.091调试8234---[l HikariPool-0]com。扎克塞尔。希卡里。水塘HikariPool:清理池后HikariPool-0统计信息(总计=10,活动=0,空闲=10,等待=0)2015-08-28 15:52:22.090调试8234---[l HikariPool-0]com。扎克塞尔。希卡里。水塘HikariPool:清理池之前HikariPool-0统计信息(总计=10,活动=0,空闲=10,等待=0)2015-08-28 15:52:22.091调试8234---[l HikariPool-0]com。扎克塞尔。希卡里。水塘HikariPool:清理池后HikariPool-0统计信息(总计=10,活动=0,空闲=10,等待=0)

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

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

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

我使用Spring Boot 1.2。5,HikariCP 2.4。1,Hibernate4.3。10.决赛。

spring boot项目的配置基于jhipster的配置。

非常感谢advanced为您提供的帮助和解决此问题的进一步信息。

共有2个答案

齐琦
2023-03-14

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

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

根据这篇文章:SpringBootActuator应用程序不会在Ubuntu VPS上启动,我们试图将源代码设置为/dev//铀矿,也不起作用。

最后,我们按照@starmer的建议安装了haveged。现在它工作得很好。建立一个疯狂的快速。

非常感谢@brettw给我指明了正确的方向!

燕和裕
2023-03-14

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

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

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

 类似资料:
  • 我在应用程序中使用以下类型安全配置。用于Slick 3.0的配置。HikariCP是Slick 3.0的默认连接池。我将池名设置为“primaryPool”: 从HikariCP日志中,我看到了清理前池统计数据db(总计=21,使用次数=0,可用次数=21,等待次数=0) 使用默认连接池名称“db”,但不是我所期望的primaryPool。我怀疑配置格式不正确。 所以我的问题是如何在应用程序中配置

  • 在Appengine上使用HikariCP作为连接池部署Spring Boot应用程序时,在执行一些请求时,我会遇到一些与数据库(线程)相关的错误: 然后我发现AppEngine只允许应用程序使用它的ThreadFactory创建线程。因此,我确保将Hikari配置为使用AppEngine的线程工厂,如下所示:

  • 当容器加载时,spring boot HikariCP提供的默认连接池大小是多少? 当然,我使用下面的属性来设置最大cp大小,但是我想知道如果我们在application.properties文件中没有给出任何数字,默认的cp大小是多少。 如果我给出application.properties最大池大小为100,而我只使用20,这会影响我的应用程序性能吗?

  • 地狱, 我是否可以获取HKARIP连接池度量信息,如总连接数、空闲连接数等? 我知道Hikaripool记录这样的信息: 清理前池统计数据库(总计=20,使用次数=0,可用次数=20,等待次数=0) 但是它太频繁了,我的代码无法控制它。我想在可配置的时间内记录这些信息,例如1分钟。顺便说一句,我用Scala Slick 3.0

  • 我正在使用hikaricp(这可能也适用于任何其他数据库连接池)。我有一个DBPool类,在其中我实例化了一个HikariDataSource(使用HikariConfig对象)。对于这个DBPool,我使用lazyholder习惯用法来限制每个VM一个池实例。但是,一旦获得对池的引用,就可以检索连接对象(无需任何进一步的锁/同步/信号量检查),因为我认为连接池会处理我的连接对象限制。每次通过数据

  • 我正在开发一个查询多个数据库的监控插件。我想使用HikariCP来保持连接打开,但我不知道如何实例化连接池。 HikariCP是否只使用一个池来存储多个数据库?或者一个数据库只有一个池,我的责任是实例化我将使用的数据库中的尽可能多的池。