【问题标题】:Broken Pipe exception on idle server空闲服务器上的断管异常
【发布时间】:2015-04-07 14:18:47
【问题描述】:

我正在使用 dropwizard 服务器来处理 http 请求。这个 dropwizard 应用程序支持我的 mysql 服务器用于数据存储。但是当闲置(过夜)时,它会给出“断管异常” 我做了一些我认为可能会有所帮助的事情。我将yaml文件中的jdbc url设置为'autoConnect=true'。我还添加了一个“checkOnBorrow”属性。我增加了 jvm 以使用 4gb 这些修复都不起作用。 mysql 服务器的 wait_timeout 和 'interactive_timeout 也设置为 8 小时。 这需要更多/更少吗?

还有可以在 dropwizard yaml 文件中设置的配置属性吗?或者换句话说,如何在 dropwizard 中管理连接池?

【问题讨论】:

    标签: mysql sockets tcp connection-pooling dropwizard


    【解决方案1】:

    问题:

    MySql 服务器配置了一个超时,之后它会终止连接池中的所有空闲连接。在我的情况下,这是默认设置(8 小时)。但是,数据库连接池不知道池中已终止的连接。因此,当有新请求进来时,会从连接池访问死连接,这会导致“Broken Pipe”异常。

    解决方案: 所以要解决这个问题,我们需要摆脱死连接,并让池知道它试图借用的连接是否是死连接。这可以通过在 .yml 配置中设置以下内容来实现。

    checkOnReturn: 真

    checkWhileIdle: 真

    checkOnBorrow: 真

    【讨论】:

    • 谢谢,对我来说工作得很好!但参数是 checkConnectionOnReturn、checkConnectionWhileIdle 和 checkConnectionOnBorrow (Dropwizard 0.9.2)
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多