2

Java アプリケーションを介してデータベースに接続中に例外が発生しました。スタックトレースは次のとおりです

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

エラーが発生したとき、インターネットと DB に接続できず、システムを再起動する必要がありました。しかし、同じコードで3日後に、つまりDBへの接続中にエラーが再び発生しました。netstat を使用して TCP 接続を確認しました。しかし、多くの TCP 接続はありませんでした。つまり、最大制限に達していません。

私たちのアプリケーションには、DB 接続 (60 以下) をプールし、2 秒ごとに DB をポーリングする必要があるため、次のクエリを起動するためにそれを維持する複数の実行時間の長い Java プロセスがあります。このアプリケーションのクエリの一部は、大きなテーブル (1,000 万レコード) を結合して関連データを取得しています。

以下のシステムとアプリケーションを使用しています

  • Windows 2003 サーバー SP2
  • Java 1.6
  • Postgres Plus Advanced サーバー 8.4 データベース
  • edb-jdbc14.jarJava からの接続 DB のドライバー

接続を 100 から 120 に増やしたことを除いて、Postgres DB のデフォルト構成を使用しました。

postgres edb ドライバーで同じエラーに遭遇した人はいますか?

解決策を見つけるのを手伝ってくれる人はいますか?

4

2 に答える 2

1

これはクライアント側の問題のように見えます - サーバーに接続することさえできません。これは、使用可能なサーバー接続が不足したときに PostgreSQL または Advanced Server から得られるエラーではありません。

問題は、クライアント プログラム/JVM のリソース、または EDB JDBC ドライバーのどこかにあります。JVM に問題が見つからない場合、PostgreSQL Plus Advanced Server を使用しているため、EnterpriseDB サポートを使用して JDBC ドライバーをサポートすることをお勧めします。(これは PostgreSQL のものとは異なります)

于 2011-01-11T12:46:20.743 に答える