Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PostgreSQL异常:org.PostgreSQL.util.PSQLException:发送到后端时发生I/O错误_Java_Sql_Postgresql_Amazon Web Services - Fatal编程技术网

Java PostgreSQL异常:org.PostgreSQL.util.PSQLException:发送到后端时发生I/O错误

Java PostgreSQL异常:org.PostgreSQL.util.PSQLException:发送到后端时发生I/O错误,java,sql,postgresql,amazon-web-services,Java,Sql,Postgresql,Amazon Web Services,我知道这是一个重复的问题。但我找不到同样的解决办法 我已经在AmazonEC2云上托管了我的应用程序。 我正在使用postgresql 我收到一个异常org.postgresql.util.PSQLException:发送到后端时发生I/O错误。在中运行我的应用程序时 详细的堆栈跟踪是: org.postgresql.util.PSQLException: An I/O error occured while sending to the backend. at org.postgres

我知道这是一个重复的问题。但我找不到同样的解决办法

我已经在AmazonEC2云上托管了我的应用程序。 我正在使用postgresql

我收到一个异常
org.postgresql.util.PSQLException:发送到后端时发生I/O错误。
中运行我的应用程序时

详细的堆栈跟踪是:

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.executeUpdate(AbstractJdbc2Statement.java:331)
    at com.spy2k3.core.business.processor.ProcessorImpl.executeUpdate(ProcessorImpl.java:237)
    at com.spy2k3.core.business.object.BusinessObject.executeUpdate(BusinessObject.java:54)
    at com.spy2k3.core.business.object.LoginObject.deleteSession(LoginObject.java:127)
    at com.spy2k3.core.business.processor.LoginProcessor.userValidation(LoginProcessor.java:79)
    at com.spy2k3.core.business.processor.LoginProcessor.execute(LoginProcessor.java:30)
    at com.spy2k3.core.business.processor.ProcessorImpl.process(ProcessorImpl.java:73)
    at com.spy2k3.core.handler.request.RequestHandler.doService(RequestHandler.java:90)
    at com.spy2k3.core.handler.AbstractHandler.doPost(AbstractHandler.java:25)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.SocketException: Socket closed
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:143)
    at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:112)
    at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:71)
    at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:269)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1700)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    ... 37 more
测试:

1。我从本地系统通过PgAdmin连接了远程postgresql server,可以连接和执行查询

2。我通过putty连接到远程服务器,可以成功执行查询。 例如:

3。当我从应用程序通过jdbc连接远程数据库时,它成功连接,但在那里执行查询花费了太多时间

你能提出解决这个时间延迟的办法吗

更新:

在深入研究这个问题的过程中,我发现延迟只发生在特定的查询中,例如
DELETE
UPDATE
。诸如
INSERT
SELECT
之类的查询执行良好

DELETE
UPDATE
查询的特点是不返回任何内容

因此,实际的问题是查询客户机(假设
psql
)正在等待数据库服务器响应,但对于这些查询,服务器什么也不返回。因此,客户端继续等待,超时后抛出异常


但是我找不到解决这个问题的地方。

问题在于
postgresql.conf
中的
synchronous\u standby\u names
参数

在我的
postgresql.conf
中,它是
synchronous\u standby\u names='*'

当我注释掉该行时,我能够执行所有查询

从:

同步\u备用\u名称(字符串):在任何时候最多有一个 主同步备用;等待提交的事务将被删除 允许在该备用服务器确认收到其 数据

如果此处未指定同步备用名称,则为同步备用名称 未启用复制,事务提交将不等待 复制


因此,实际问题是:
查询客户端(假设psql)正在等待数据库服务器响应,但对于这些查询,服务器不会返回任何内容,因为启用了同步复制。因此,客户端一直在等待,超时后抛出异常。

查看服务器上的PostgreSQL server错误日志,了解它对断开连接的说明。就个人而言,考虑到延迟和断断续续的连接,我会说你有连接问题。你能在没有服务器的ip和用户名/密码以及查询数据库的方法的情况下发布连接字符串吗?@CraigRinger,Arya:我更新了我的问题。奇怪的理论是重新删除/更新vs插入/选择。服务器仍然会返回这些命令的行数和sqlstate。继续看,这不太可能是问题所在。如果你陷入困境,可以使用Wireshark之类的工具来详细检查网络通信。
    [root@ip-xx-xxx-xx-xxx bin]# psql -U myuser -d mydatabase
    psql (9.2.4)
    Type "help" for help.

mydatabase=# SELECT USERID FROM MY_MAST_LOGINSESSION WHERE SESSIONID='5DFD5D1E09D523695D6057SOMETHING';
 userid
--------
(0 rows)