繁体   English   中英

Dropwizard应用程序中的管道破损异常

[英]Broken Pipe exception in Dropwizard application

当服务器长时间运行而没有任何http请求时,出现“管道中断”异常。 经过一番调查,我发现发生此异常是因为服务器关闭了其数据库连接,并在连接关闭时客户端请求资源时发生了。 为了解决这个问题,我将以下内容添加到了jdbc连接网址中

?autoReconnect=true

我还增加了机器上的堆内存,以防万一。 同样,没有很多http客户端从此dropwizard服务器请求资源。 还有其他可能发生的事情吗?

错误信息供参考

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文件中解决了此问题

  1. checkConnectionWhileIdletrue
  2. checkConnectionOnReturntrue
  3. checkConnectionOnBorrowtrue

并确保所有事务都已提交,在发生异常的情况下回滚,并在使用后关闭会话。

根据您使用的是JDBiHibernate还是其他工具,我建议使用提供的捆绑软件来建立连接。 这些捆绑包带有一个内置池,可以很容易地对其进行配置,如链接上的示例所示。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM