Re: Enabling connection pooling by default

Поиск
Список
Период
Сортировка
От Craig Ringer
Тема Re: Enabling connection pooling by default
Дата
Msg-id 48F6BECB.3070008@postnewspapers.com.au
обсуждение исходный текст
Ответ на Re: Enabling connection pooling by default  ("Andrus" <kobruleht2@hot.ee>)
Список pgsql-odbc
Andrus wrote:

> If application is idle for a some time, ADSL modems or something other
> in wire closes connection automatically.
> To prevent this I think I need to close connection after every major
> transaction is finished in my application.
> In some cases major transactions are called rapidly. In this case
> automatic connection pool with 60 sec time should be useful to eliminate
> time
> to establish new  connection.

The automatic close is probably a TCP/IP connection timeout or (much
more likely) a home user's NAT router expiring connection tracking entries.

Continued activity on the connection should prevent this. See these
configuration directives, which you can set in postgresql.conf or
per-connection using the SET command:

tcp_keepalives_idle = 0        # TCP_KEEPIDLE, in seconds;
tcp_keepalives_interval = 0        # TCP_KEEPINTVL, in seconds;
tcp_keepalives_count = 0        # TCP_KEEPCNT;

Of course, your code must still be prepared to handle broken connections
where it re-establishes the connection and retries the transaction. You
need to be prepared for transaction failures due to other transient
errors, too.

> I have no idea how to implement this with multiple connections.
> Maybe to create login table. When user log-in appl inserts record to it,
> log-off removes record.

This won't work, because an unexpected connection break won't remove the
record.

You could use an advisory lock on some imaginary resource, but that'd be
pretty ugly.

--
Craig Ringer

В списке pgsql-odbc по дате отправления:

Предыдущее
От: "Richard Broersma"
Дата:
Сообщение: Re: DAO TO ODBC
Следующее
От: "Andrus"
Дата:
Сообщение: Re: Enabling connection pooling by default