Dropwizard应用程序中的断管异常

当服务器在没有任何http请求的情况下长时间运行时,我收到了“断开的管道”异常。 经过一番调查后,我发现这个异常发生,因为服务器关闭了它的数据库连接,并且当客户端在连接关闭时请求资源时发生。 为了解决这个问题,我在jdbc conenction url中添加了以下内容

?autoReconnect=true

为了以防万一,我还在机器上增加了堆内存。 此外,从此dropwizard服务器请求资源的http客户端也不多。 还有什么可能会发生?

错误消息供参考

You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

我有办法在dropwizard应用程序中配置连接池吗? 或者,将mysqld的'interactive-timeout'和'wait_timeout'属性更改为8小时以上是一个好习惯吗?


感谢您的帮助,我通过将以下内容添加到yaml文件中解决了此问题

  • checkConnectionWhileIdletrue
  • checkConnectionOnReturntrue
  • checkConnectionOnBorrowtrue
  • 并确保所有事务都已提交,在例外情况下回滚,会话在使用后关闭。


    根据您使用的是JDBi,Hibernate还是其他,我建议使用提供的软件包来建立连接。 这些捆绑包带有一个内置池,可以很容易地配置,因为链接上的示例应该显示。

    如果您使用普通JDBC或其他OR映射器,则可以始终自行编写托管对象或适当的包,或者尝试在启动过程中直接利用ManagedPooledDatasource。

    链接地址: http://www.djcxy.com/p/61709.html

    上一篇: Broken Pipe exception in Dropwizard application

    下一篇: Oracle eclipse connection