Dropwizard应用程序中的Broken Pipe异常

时间:2015-04-06 15:23:16

标签: java jdbc heap dropwizard broken-pipe

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

?autoReconnect=true

为了以防万一,我还提高了机器上的堆内存。此插件向导服务器请求资源的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小时以上是一个好习惯?

2 个答案:

答案 0 :(得分:2)

感谢您的帮助,我通过将以下内容添加到yaml文件

来解决此问题
  1. checkConnectionWhileIdletrue
  2. checkConnectionOnReturntrue
  3. checkConnectionOnBorrowtrue
  4. 确保所有事务都已提交,如果出现异常则回滚,并且会话在使用后关闭。

答案 1 :(得分:0)

根据您使用的是JDBiHibernate还是其他内容,我建议您使用提供的捆绑包来设置连接。这些捆绑包带有一个内置池,可以轻松配置,因为链接上的示例应该显示。

如果使用普通JDBC或其他OR映射器,您可以自己编写Managed Object或正确的捆绑包,或者尝试在启动期间直接使用ManagedPooledDatasource