Thread: BUG #5829: No buffer Space Available(maximum connection reached?) from postgres edb driver

BUG #5829: No buffer Space Available(maximum connection reached?) from postgres edb driver

From
"Listening Platform"
Date:
The following bug has been logged online:

Bug reference:      5829
Logged by:          Listening Platform
Email address:      listening.platform@gmail.com
PostgreSQL version: 8.4 AS
Operating system:   Windows 2003 server SP2
Description:        No buffer Space Available(maximum connection reached?)
from postgres edb driver
Details:

Hi,

We are facing an exception while connecting to database through our
application. The stack trace is as follows

com.edb.util.PSQLException: The connection attempt failed.
    at
com.edb.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryIm
pl.java:189)
    at
com.edb.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
    at
com.edb.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:16
1)
    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(ConnectionFactoryIm
pl.java:115)
    ... 20 more


When the error occured we were not able to connect to internet and DB and
had to reboot the system.But the error occured again after 3 days at same
code i.e while connecting to DB.We checked TCP connections using netstat.
But there were not many TCP connections i.e it has not reached the max
limit.

Our application has multiple long running Java processes that pools the DB
connections (not more than 60) and keeps it alive for firing the next query
(as it has to poll the DB every 2 seconds).Some of the queries in our
application are joining large tables(10 million records) to get the related
data.

We are using following System and applications
Windows 2003 server SP2
Java 1.6
Postgres Plus Advanced server 8.4   Database
edb-jdbc14.jar driver for connection DB from Java

We have used the default configuration of Postgres DB except increasing the
connection to 120 from 100.

Has anybody encountred the same error with postgres edb driver?
Can anybody help us finding the solution?
On 01/11/2011 05:41 PM, Listening Platform wrote:
>
> The following bug has been logged online:
>
> Bug reference:      5829
> Logged by:          Listening Platform
> Email address:      listening.platform@gmail.com
> PostgreSQL version: 8.4 AS
> Operating system:   Windows 2003 server SP2
> Description:        No buffer Space Available(maximum connection reached?)
> from postgres edb driver


> 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(ConnectionFactoryIm
> pl.java:115)
>     ... 20 more

It'd be nice to have those "20 more". Java's habit of truncating
exception stack traces is one of the more annoying things it does.

In this case, though, it seems pretty likely that you

> When the error occured we were not able to connect to internet and DB

Hang on ... you mean that you were unable to access Internet services
from the machine either?

Were you able to connect to the running PostgreSQL database via "psql"
or via PgAdmin III?

Were there any error messages in the postgresql log files?

What about ICMP ping? traceroute ("tracert" on Windows) to Internet
hosts? To your local gateway / nexthop router? etc.

 > We checked TCP connections using netstat.
> But there were not many TCP connections i.e it has not reached the max
> limit.

What is "not many" in this context?

Which limit? you know that the operating system imposes its own limit on
the number of TCP/IP connections that may exist, right? That limit
includes connections that are half-open or closing as well as regular
open/established connections.

> Java 1.6

Java SE 6? Java EE 6?

There is no such thing as "java 1.6".

--
Craig Ringer