我们有一个基于微服务的系统,其中一个专用服务对MySQL执行所有与数据库相关的调用(db reader)。
在对< code>db-reader服务的其他服务中不时出现断路错误。
我们发现在此期间发生了Hikari池连接关闭/打开操作。
08:39:25.312 2022-03-28 08:39:25,311 [HikariPool-19 连接关闭] DEBUG com.zaxxer.hikari.pool.PoolBase - HikariPool-19 - 关闭连接com.mysql.cj.jdbc.ConnectionImpl@66fd15ad:(连接被逐出或失效)
2022-03-28 08:58:25,396[HikariPool-19连接更近]DEBUGcom.zaxxer.hikari.pool.PoolBase-HikariPool-19-关闭连接com.mysql.cj.jdbc.ConnectionImpl@413992c9:(连接已通过maxLifetime)
08:58:25.400 2022-03-28 08:58-25399[HikariPool-19连接加法器]调试com.zaxxer.hikari.pool。HikariPool-Hikaripol-19-添加连接com.mysql.cj.jdbc.ConnectionImpl@759ad492
在< code>db-reader服务配置中,我们有:
hikariConfig.setConnectionTimeout(30000);
hikariConfig.setIdleTimeout(35000);
hikariConfig.setMaxLifetime(45000);
如日志所示,连接由于<code>最大寿命?(连接池大小为50)
有没有办法避免这种情况发生?
试试吧
setConnectionTimeout(15 _ 000);//15秒
setIdleTimeout(60_000);//1分钟
设置最大寿命(3_00_000)//5分钟
IdleTimeout 可以是零 OR,至少是 MaxLifetime 的一半。
还要检查在池超时设置之前关闭连接的框架/vpn/设备/网络/db的超时设置。
主要内容:1.引入jar包,2.配置文件编写,3.编写数据库,4.编写实体类,5.编写Mapper接口,6.在业务层中引入用户的用户名和密码,7.测试1.引入jar包 2.配置文件编写 appilication.properties 需要注意后面需要加上时区,因为当前引入的是SpringBoot2以上的版本 3.编写数据库 4.编写实体类 5.编写Mapper接口 这里是继承了BaseMapper接口 6.在业务层中引入用户的用户名和密码 第一个是导入UserMapper接口 第二个是根据接口去
问题内容: 如果我在闲置了一段时间后启动应用程序,那么我曾经遇到以下错误。(我正在使用Spring + Hibernate + MySQL作为DB) 我通过将以下内容添加到我的servlet-context.xml中解决了这个问题。 我在这里问了这个问题,这个问题是解决方案所特有的。我需要知道为什么会遇到这个错误。 我尝试了上面链接中提供的第一个选项(使用autoReconnect = true配
问题内容: 我在GlassFish上有一个Java-JSF Web应用程序,我想在其中使用连接池。因此,我创建了一个有范围的Bean,可与其他Bean的实例一起使用: 这样,连接池很快就会被填满。在“ db-related”视图中进行几次导航后,应用程序将停止以下操作: RAR5117:无法从连接池[mysql_testPool]获取/创建连接。原因:使用中的连接等于最大池大小和已过期的最大等待时
问题内容: 我已经创建了我的应用程序并在Windows下对其进行了测试,该Windows可以在Access DB文件中进行读写操作。 但是在现实世界中,它将在linux环境中运行,而我现在遇到了一个大问题,似乎没有用于Linux的驱动程序来访问ms acess db,这是我现在进行连接的方式: 有没有人遇到过类似的事情,有人建议我该怎么办? 这是我在linux上得到的例外: 问题答案: 在Linu
我向websphere V7添加了一个新的数据源。0,它工作正常,但在一段不活动时间后,池将返回死连接,java将进入等待状态,直到连接超时过期。如果我转到datasource管理页面并“测试连接”,连接池将再次工作。 我注意到,我们的oracle db会不时地关闭连接。 您知道如何从java重新激活连接吗?是否有其他方法来对抗Websphere池中的死连接?
问题内容: 有关关闭Java中数据库连接的后续问题 我知道conn.close()是必需的,但不知道为什么。一旦方法调用结束,垃圾收集器是否会释放连接对象(并释放连接对象中存储的所有指向数据库的处理程序)? 问题答案: 一旦方法调用结束,垃圾收集器是否会释放连接对象(并释放连接对象中存储的所有指向数据库的处理程序)? 没有。JDBC驱动程序保留对连接的引用,因此除非您可以关闭(),否则它不会被清除