Обсуждение: Pooling with npgsql does not seem to work

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

Pooling with npgsql does not seem to work

От
Raul Kaubi
Дата:
Hi

We have .NET application (on windows) and postgres 12 database, which sits on CentOS 7 and we are having difficulties getting connection pooling to work.

We are using npgsql driver for pooling, so not interested in pgbouncer or pgbool.

In our appsettings.json file, database connect string is as follows:

ConnectionString": "Host=nnnnn.domain.com;Port=5432;Database=testdb;Username=app_user;Password=xxxxxxx;Pooling=true;MinPoolSize=17;Maximum Pool Size=40;Application Name=testapplication"

When I start application, then I can only see 1 or 2 processes inside database for that specific application. But shouldn't there be minimum of 17 processes created...?

I am checking with the following query, and this num is no more than 2 when application starts.

select datname, usename, application_name, client_addr, client_hostname, count(1) as num
from pg_stat_activity
where usename = 'app_user'
group by datname, usename, application_name, client_addr, client_hostname
order by usename, client_addr, datname;

Any hints..?
There may be possibility that something is wrong with the application code itself.
But to determine the exact cause, I would first like to know that the problem isn-t with the connect string etc..

Raul

Re: Pooling with npgsql does not seem to work

От
"David G. Johnston"
Дата:
On Wed, Oct 14, 2020 at 8:31 AM Raul Kaubi <raulkaubi@gmail.com> wrote:
MinPoolSize=17;Maximum Pool Size=40

It seems odd that one of those is spelled out fully while the other is not - and indeed the documentation says it's "minimum", not "min" (and supposedly has spaces like "Maximum Pool Size"...)

David J.

Re: Pooling with npgsql does not seem to work

От
Raul Kaubi
Дата:
Actually, I tried both settings
MinPoolSize
Minimum Pool Size

Same for max.
Seems like both are supported. In addition to that, when I deliberately made typo there, the application just won’t start at all.

So seems like these both are fine, since application does indeed start with these, just I do not see theses 17 processes anywhere..

Raul

Sent from my iPhone

On 14. Oct 2020, at 18:38, David G. Johnston <david.g.johnston@gmail.com> wrote:


On Wed, Oct 14, 2020 at 8:31 AM Raul Kaubi <raulkaubi@gmail.com> wrote:
MinPoolSize=17;Maximum Pool Size=40

It seems odd that one of those is spelled out fully while the other is not - and indeed the documentation says it's "minimum", not "min" (and supposedly has spaces like "Maximum Pool Size"...)

David J.

Re: Pooling with npgsql does not seem to work

От
"David G. Johnston"
Дата:
On Wed, Oct 14, 2020 at 8:49 AM Raul Kaubi <raulkaubi@gmail.com> wrote:
Actually, I tried both settings
MinPoolSize
Minimum Pool Size

Same for max.
Seems like both are supported. In addition to that, when I deliberately made typo there, the application just won’t start at all.

So seems like these both are fine, since application does indeed start with these, just I do not see theses 17 processes anywhere..

The npgsql project has its own support channels, this question doesn't meet the point of this mailing list nor the PostgreSQL server lists generally, but I was curious and took a look around their documentation (not helpful) and code.  I don't see where the driver, upon initial connection with a pool, forces open a number of connections equal to the minimum specified.  The minimum behaves such that once exceeded the number of open connections will then not decrease below that number.  It doesn't proactively open connections to obtain the minimum - not an unreasonable choice.

David J.

Re: Pooling with npgsql does not seem to work

От
Raul Kaubi
Дата:
Kontakt David G. Johnston (<david.g.johnston@gmail.com>) kirjutas kuupäeval K, 14. oktoober 2020 kell 20:07:
On Wed, Oct 14, 2020 at 8:49 AM Raul Kaubi <raulkaubi@gmail.com> wrote:
Actually, I tried both settings
MinPoolSize
Minimum Pool Size

Same for max.
Seems like both are supported. In addition to that, when I deliberately made typo there, the application just won’t start at all.

So seems like these both are fine, since application does indeed start with these, just I do not see theses 17 processes anywhere..

The npgsql project has its own support channels, this question doesn't meet the point of this mailing list nor the PostgreSQL server lists generally, but I was curious and took a look around their documentation (not helpful) and code.  I don't see where the driver, upon initial connection with a pool, forces open a number of connections equal to the minimum specified.  The minimum behaves such that once exceeded the number of open connections will then not decrease below that number.  It doesn't proactively open connections to obtain the minimum - not an unreasonable choice.

David J.


Oh, yeah, it makes sense - this looks like is working as intended then.
Thanks.

Raul