Обсуждение: JDBC IOException: Broken pipe

Поиск
Список
Период
Сортировка

JDBC IOException: Broken pipe

От
"Frank Morton"
Дата:
I'm new to the list, though I have been using postgresql for awhile.

My understanding is that the JDBC driver is not thread safe, so
what I have been doing is opening a new connection to the database
for each thread. In this application, generally 5 to 10 threads
are running.

I am using Solaris 2.5.1 with postgresql 6.3.2.

My problem is that after running "awhile" (which I will call 24 hours,
though I am not sure yet if that is long or short) even the most
simple application will start getting java.io.IOException: Broken pipe
exceptions, which I assume means that the database has disappeared.
Is that right?

I am looking for advice in general regarding how I am handling
the threading situation and if anyone can shed any light on how
to avoid "Broken pipe".

Thanks.


_________________________________
Frank Morton (fmorton@mail.base2inc.com)
Voice: (317) 876-3355
FAX: (317) 876-3398
Home: (317) 574-0815




Re: [INTERFACES] JDBC IOException: Broken pipe

От
Peter T Mount
Дата:
On Tue, 4 Aug 1998, Frank Morton wrote:

> I'm new to the list, though I have been using postgresql for awhile.
>
> My understanding is that the JDBC driver is not thread safe, so
> what I have been doing is opening a new connection to the database
> for each thread. In this application, generally 5 to 10 threads
> are running.
>
> I am using Solaris 2.5.1 with postgresql 6.3.2.
>
> My problem is that after running "awhile" (which I will call 24 hours,
> though I am not sure yet if that is long or short) even the most
> simple application will start getting java.io.IOException: Broken pipe
> exceptions, which I assume means that the database has disappeared.
> Is that right?

Yes, that is correct.

> I am looking for advice in general regarding how I am handling
> the threading situation and if anyone can shed any light on how
> to avoid "Broken pipe".

One method I've heared about is to create a pool of connections.

When a thread needs to use a connection, then it requests one from a pool
manager class, and returns it when it's done. This would allow you to keep
the number of open connections down, especially if your threads only
access the database once in a while.

The manager class would check each connection before handing it out, and
if it's dead (or if it's run out of free connections), it creates a new
one.

This is how some servelets are handling persistent connections.

--
Peter T Mount peter@retep.org.uk or petermount@earthling.net
Main Homepage: http://www.retep.org.uk
PostgreSQL JDBC Faq: http://www.retep.org.uk/postgres