2011-01-11 25 views
2

我们在通过我们的Java应用程序连接到数据库时遇到了异常。堆栈跟踪如下没有缓冲空间可用(已达到最大连接?)形式Postgres EDB驱动程序

com.edb.util.PSQLException: The connection attempt failed. 
at com.edb.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:189) 
at com.edb.core.ConnectionFactory.openConnection(ConnectionFactory.java:64) 
at com.edb.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:161) 
at com.edb.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30) 
at com.edb.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24) 
at com.edb.Driver.makeConnection(Driver.java:391) 
at com.edb.Driver.connect(Driver.java:266) 
at java.sql.DriverManager.getConnection(Unknown Source) 
at java.sql.DriverManager.getConnection(Unknown Source) 
... 12 more 
Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): connect 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.PlainSocketImpl.doConnect(Unknown Source) 
at java.net.PlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at com.edb.core.PGStream.<init>(PGStream.java:70) 
at com.edb.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:115) 
... 20 more 

当错误发生时,我们无法连接到互联网和数据库,并不得不重新启动系统。但是,在连接到数据库的同一代码的3天后再次出现错误。我们使用netstat检查了TCP连接。但是没有太多的TCP连接,即没有达到最大限度。

我们的应用程序有多个长时间运行的Java流程,池中的数据库连接(不超过60),并保持它活着的发射下一个查询(因为它必须查询每2秒的DB)。我们应用程序中的一些查询正在加入大型表(1000万条记录)以获取相关数据。

我们使用以下的系统及应用

  • 的Windows 2003 Server SP2
  • 的Java 1.6
  • 的Postgres Plus Advanced Server的8.4数据库
  • edb-jdbc14.jar从Java
驱动程序连接数据库

我们使用Postgres DB的默认配置,除了增加从100

连接到120人encountred在Postgres教育局司机同样的错误?

任何人都可以帮助我们找到解决方案吗?

+0

服务器日志所以什么? – 2011-01-11 12:11:32

回答

1

这看起来像一个客户端的问题 - 它从来没有设法甚至连接到服务器。它是而不是当您的PostgreSQL或高级服务器用完可用服务器连接时发生的错误。

问题是,无论是在你的客户端程序/ JVM的资源,或者在EDB JDBC驱动程序的地方。如果您在JVM中找不到任何不正确的东西,并且由于您使用的是PostgreSQL Plus Advanced Server,那么我建议您使用EnterpriseDB支持来获得有关其JDBC驱动程序的帮助。 (这是PostgreSQL的一个不同)

相关问题