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.jar
Java からの接続 DB のドライバー
接続を 100 から 120 に増やしたことを除いて、Postgres DB のデフォルト構成を使用しました。
postgres edb ドライバーで同じエラーに遭遇した人はいますか?
解決策を見つけるのを手伝ってくれる人はいますか?