防止丢弃持久连接

时间:2014-07-29 09:48:14

标签: java database postgresql heroku

我们正在使用Talend和其他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层中。你有什么建议如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题