通信链路故障ClearDB

时间:2017-09-08 14:07:19

标签: java mysql hibernate heroku cleardb

我意识到还有其他类似于我的问题,但我觉得我的情况有点不同,所以无论如何我都会问它。我一直在使用hibernate来开发一个java Web应用程序,并且在我在localhost Tomcat服务器上运行时没有遇到任何问题。但是,在尝试将其部署到Heroku并使用ClearDB的免费版本之后,我已经遇到了问题,因为该网站将随机抛出异常。具体来说,我得到了一个

org.hibernate.exception.JDBCConnectionException: Communications link failure 

我在谷歌上发现但我认为不是我的问题:

  • 数据库闲置时间过长(> 8小时)。我一直在不断使用这个网站,所以它绝对没有闲置超过8小时。
  • 与数据库的连接太多。我是目前唯一连接到数据库的网站,网站上说最多有10个连接,所以我在其限制范围内

我的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.password">PASSWORD</property>
    <property name="hibernate.connection.url">jdbc:mysql://DBURL?reconnect=true</property>
    <property name="hibernate.connection.username">USERNAME</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name= "hbm2ddl.auto">update</property>
    <property name="show_sql">true</property>
</session-factory>

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您使用JawsDB add-on而不是ClearDB,我愿意打赌这会消失:

$ heroku addons:destroy cleardb
$ heroku addons:create jawsdb:kitefin

我对ClearDB有很多问题。

如果必须使用ClearDB,我建议在数据库连接池配置中添加connectionTestQuery。我不确定如何一般地执行此操作,但如果您使用的是HikariCP(这很棒且您应该使用),您可以添加以下内容:

<property name="hibernate.hikari.connectionTestQuery">SELECT 1</property>

答案 1 :(得分:0)

ClearDB通常会关闭具有空闲/睡眠状态的连接超过60秒。当您的系统认为它具有数据库连接但远程主机已关闭它时,会发生这种情况。正如之前的受访者所提到的,快速的connectionTestQuery应该解决这个问题。