Re: Connection slots reserved for replication
От | Masahiko Sawada |
---|---|
Тема | Re: Connection slots reserved for replication |
Дата | |
Msg-id | CAD21AoCVcitq+DiBSPfeZLnEDv4u0oezdU-SefYp6_7=JF8_Hw@mail.gmail.com обсуждение исходный текст |
Ответ на | Connection slots reserved for replication (Alexander Kukushkin <cyberdemn@gmail.com>) |
Ответы |
Re: Connection slots reserved for replication
|
Список | pgsql-hackers |
On Wed, Aug 1, 2018 at 9:30 PM, Alexander Kukushkin <cyberdemn@gmail.com> wrote: > Hello hackers, > > at the moment it is possible to reserve some amount of connection slots for > superusers and this behavior is controlled by superuser_reserved_connections > configuration parameter with the default value = 3. > > In case if all non-reserved connection slots are busy, replica fails to open > a new connection and start streaming from the primary. Such behavior is very > bad if you want to run postgresql HA clusters Yeah, that's also bad if we want to use pg_baseback in the situation. > > Initially, replication connections required superuser privileges (in 9.0) > and therefore they were deliberately excluded from > superuser_reserved_connections. Basically that means it has never been > possible to reserve come connection slots for replication connections. > > Later (9.1) it became possible to create a user with REPLICATION and > NOSUPERUSER options, but comment in the postinit.c still tells that > superuser is required. > > Now I think now it is a time to go further, and we should make it possible > to reserve some connection slots for replication in a manner similar to > superuser connections. > +1 > How should it work: > 1. If we know that we got the replication connection, we just should make > sure that there are at least superuser_reserved_connections free connection > slots are available. > 2. If we know that this is neither superuser nor replication connection, we > should check that there are at least (superuser_reserved_connections + > NumWalSenders() - max_wal_senders) connection slots are available. You wanted to mean (superuser_reserved_connections + max_wal_senders - NumWalSenders()) in the second point? > > And the last question how to control the number of reserved slots for > replication. There are two options: > 1. We can introduce a new GUC for that: replication_reserved_connections > 2. Or we can just use the value of max_wal_senders > > Personally, I more like the second option. > One argrable point of the second option could be that it breaks backward compatibility of the parameter configurations. That is, the existing systems need to re-configure the max_connections. So it might be better to take the first option with replication_reservd_connections = 0 by default. Regards, -- Masahiko Sawada NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center
В списке pgsql-hackers по дате отправления: