Re: libpq contention due to gss even when not using gss

Поиск
Список
Период
Сортировка
От Daniel Gustafsson
Тема Re: libpq contention due to gss even when not using gss
Дата
Msg-id 0CEC81E5-4CF5-4D59-9A63-54B1611268C6@yesql.se
обсуждение исходный текст
Ответ на Re: libpq contention due to gss even when not using gss  (Dmitry Dolgov <9erthalion6@gmail.com>)
Ответы Re: libpq contention due to gss even when not using gss
Список pgsql-hackers
> On 14 Jun 2024, at 10:46, Dmitry Dolgov <9erthalion6@gmail.com> wrote:
>
>> On Thu, Jun 13, 2024 at 10:30:24AM GMT, Andres Freund wrote:
>>>> To investigate a report of both postgres and pgbouncer having issues when a
>>>> lot of new connections aree established, I used pgbench -C.  Oddly, on an
>>>> early attempt, the bottleneck wasn't postgres+pgbouncer, it was pgbench. But
>>>> only when using TCP, not with unix sockets.
>>>>
>>>> c=40;pgbench -C -n -c$c -j$c -T5 -f <(echo 'select 1') 'port=6432 host=127.0.0.1 user=test dbname=postgres
password=fake'
>>>>
>>>> host=127.0.0.1:                           16465
>>>> host=127.0.0.1,gssencmode=disable         20860
>>>> host=/tmp:                                49286
>>>>
>>>> Note that the server does *not* support gss, yet gss has a substantial
>>>> performance impact.
>>>>
>>>> Obviously the connection rates here absurdly high and outside of badly written
>>>> applications likely never practically relevant. However, the number of cores
>>>> in systems are going up, and this quite possibly will become relevant in more
>>>> realistic scenarios (lock contention kicks in earlier the more cores you
>>>> have).
>>>
>>> By not supporting gss I assume you mean having built with --with-gssapi,
>>> but only host (not hostgssenc) records in pg_hba, right?
>>
>> Yes, the latter. Or not having kerberos set up on the client side.
>
> I've been experimenting with both:
>
> * The server is built without gssapi, but the client does support it.
>  This produces exactly the contention you're talking about.
>
> * The server is built with gssapi, but do not use it in pg_hba, the
>  client does support gssapi. In this case the difference between
>  gssencmode=disable/prefer is even more dramatic in my test case
>  (milliseconds vs seconds) due to the environment with configured
>  kerberos (for other purposes, thus gss_init_sec_context spends huge
>  amount of time to still return nothing).
>
> At the same time after quick look I don't see an easy way to avoid that.
> Current implementation tries to initialize gss before getting any
> confirmation from the server whether it's supported. Doing this other
> way around would probably just shift overhead to the server side.

The main problem seems to be that we check whether or not there is a credential
cache when we try to select encryption but not yet authentication, as a way to
figure out if gssenc it as all worth trying?  I experimented with deferring it
with potentially cheaper heuristics in encryption selection, but it seems hard
to get around since other methods were even more expensive.

--
Daniel Gustafsson




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

Предыдущее
От: Michail Nikolaev
Дата:
Сообщение: Re: Issues with ON CONFLICT UPDATE and REINDEX CONCURRENTLY
Следующее
От: Shubham Khanna
Дата:
Сообщение: Re: Pgoutput not capturing the generated columns