【问题标题】:Prevent dropping a persistent connection防止断开持久连接
【发布时间】:2014-09-20 15:46:24
【问题描述】:

我们正在使用 Talend 和 rest web 服务在 Heroku 上存储数据。经过一段时间的空闲时间后,我们的持久连接被丢弃。我搜索了 postgresql 文档,但找不到任何设置空闲连接超时的参数。我们面临的问题如下:

Exception in component tPostgresqlInput_2
org.postgresql.util.PSQLException: An I/O error occured while sending to the backend.
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:281)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:403)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:283)
    at ulu.loaderherokueventsdbg_0_1.LoaderHerokuEventsDBG.tPostgresqlInput_2Process(LoaderHerokuEventsDBG.java:856)
    at ulu.loaderherokueventsdbg_0_1.LoaderHerokuEventsDBG.tJava_2Process(LoaderHerokuEventsDBG.java:617)
    at ulu.loaderherokueventsdbg_0_1.LoaderHerokuEventsDBG.tPostgresqlConnection_1Process(LoaderHerokuEventsDBG.java:1260)
    at ulu.loaderherokueventsdbg_0_1.LoaderHerokuEventsDBG.tLibraryLoad_2Process(LoaderHerokuEventsDBG.java:1114)
    at ulu.loaderherokueventsdbg_0_1.LoaderHerokuEventsDBG.runJobInTOS(LoaderHerokuEventsDBG.java:2231)
    at ulu.loaderherokueventsdbg_0_1.LoaderHerokuEventsDBG.main(LoaderHerokuEventsDBG.java:1992)
Caused by: java.net.SocketException: Connection reset by peer: socket write error
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(Unknown Source)
    at java.net.SocketOutputStream.write(Unknown Source)
    at sun.security.ssl.OutputRecord.writeBuffer(Unknown Source)
    at sun.security.ssl.OutputRecord.write(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.writeRecordInternal(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.writeRecord(Unknown Source)
    at sun.security.ssl.AppOutputStream.write(Unknown Source)
    at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
    at java.io.BufferedOutputStream.flush(Unknown Source)
    at org.postgresql.core.PGStream.flush(PGStream.java:518)
    at org.postgresql.core.v3.QueryExecutorImpl.sendSync(QueryExecutorImpl.java:1141)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:254)
    ... 9 more

this site 我可以读到连接断开的原因可能不是在数据库中,而是在 tcp 层。您对如何解决这个问题有什么建议吗?

【问题讨论】:

    标签: java database postgresql heroku


    【解决方案1】:

    我只是猜测,但超时或空闲时间可能存在问题。 网络本身可能存在其他问题,或者您的后端响应了客户端不理解的内容。

    我可以看到你正在使用 PostgreSQL? 我只是猜测,但尝试注释掉这一行:synchronous_standby_names = '*'
    postgresql.conf 中,它将阻止客户端等待并在等待服务器响应时超时。

    但正如我所说,我只是在这里猜测......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-11
      • 2020-07-29
      • 2013-11-19
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      • 2020-08-16
      • 1970-01-01
      相关资源
      最近更新 更多