2011-01-11 27 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的一個不同)

相關問題