On Tue, Apr 20, 2010 at 7:52 PM, Robert Haas <robertmh...@gmail.com> wrote: > Let's just stop for a second and think about why we have > superuser_reserved_connections in the first place. As I understand > it, the point is that we want to make sure that superusers don't get > locked out of the database, because superuser intervention might be > necessary to recover from whatever series of unfortunate events has > caused all of the connection slots to get used up. For example, if > there are several different applications that connect to the database, > the superuser might like to log in and see which application has > requested more than its usual allotment of connections, or the > superuser might like to log in and terminate those backends which, in > his judgement, ought to be terminated. In other words, the purpose of > superuser_reserved_connections is to allow the database to recover > from a bad state that it has gotten into: specifically, a state where > all the connection slots have been used up and regular users can't > connect. > > If replication connections can use up superuser_reserved_connections > slots, then it's very possible that this safety valve will fail > completely. If the server is being flooded with connection attempts, > and one of the streaming replication connection dies, then a regular > backend will immediate grab that slot. When the streaming replication > slave automatically tries to reconnect, it will now grab one of the > superuser_reserved_connections slots, putting us one step closer to > the bad scenario where there's no way for the superuser to log in > interactively and troubleshoot. > > In other words, I don't care whether or not the replication connection > is or is not technically a superuser connection. What I think is > important is trying to preserve the ability for a superuser to log in > interactively and clean up the mess even when the regular supply of > connections is maxed out.
Yeah, I agree with you, but the difference is only how to achieve. ISTM that there are three choices: 1. Heikki's proposal > ReservedBackends = superuser_reserved_connections + max_wal_senders > MaxBackends = max_connections + autovacuum_max_workers + max_wal_senders + 1 2. My proposal Remove superuser privilege from replication connection 3. Your proposal Treat superuser replication connection like non-superuser one Since 3. is confusing for me, I like 1. or 2. Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers