1
我有一个使用Hibernate 3,c3p0和spring 2.5.6的应用程序。我们有一个配置为与postgres数据库交谈的数据源。在应用程序服务器和数据库之间引入防火墙之前,一切都很好。我们间歇性地获取java.net.SocketTimeoutException:在尝试与数据库通信时读取超时错误。如何配置c3p0/hibernate的查询超时阈值
我们认为防火墙的开销会导致数据库延迟响应。我们希望通过提高查询超时之前的等待时间(如果甚至可能的话)的阈值来验证这一点。这里是一个stacktrace片段
org.postgresql.util.PSQLException: An I/O error occured while sending to the backend.
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:218)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1808)
at org.hibernate.loader.Loader.doQuery(Loader.java:697)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1881)
... 35 more
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:135)
at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:104)
at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73)
at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:259)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1166)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192)
... 44 more
啊......我们正在运行8.2。是否有另一种操纵价值的方法? – predhme
此设置在8.3和之前不存在。请注意,我指的是JDBC版本,而不是Postgresql版本。 JDBC是向后兼容的(绝对是所有的8.x版本),所以我建议你升级你的驱动程序。 – ChssPly76
甜!没有意识到这一点。非常感谢! – predhme