Thread: remove check hooks for GUCs that contribute to MaxBackends
While working on an idea from another thread [0], I noticed that each of max_connections, max_worker_process, max_autovacuum_workers, and max_wal_senders have a check hook that verifies the sum of those GUCs does not exceed a certain value. Then, in InitializeMaxBackends(), we do the same check once more. Not only do the check hooks seem redundant, but I think they might sometimes be inaccurate since some values might not yet be initialized. Furthermore, the error message is not exactly the most descriptive: $ pg_ctl -D . start -o "-c max_connections=262100 -c max_wal_senders=10000" FATAL: invalid value for parameter "max_wal_senders": 10000 The attached patch removes these hooks and enhances the error message to look like this: FATAL: too many backends configured DETAIL: "max_connections" (262100) plus "autovacuum_max_workers" (3) plus "max_worker_processes" (8) plus "max_wal_senders"(10000) must be less than 262142. The downside of this change is that server startup progresses a little further before it fails, but that might not be too concerning given this _should_ be a relatively rare occurrence. Thoughts? [0] https://postgr.es/m/20240618213331.ef2spg3nasksisbi%40awork3.anarazel.de -- nathan
Attachment
Nathan Bossart <nathandbossart@gmail.com> writes: > While working on an idea from another thread [0], I noticed that each of > max_connections, max_worker_process, max_autovacuum_workers, and > max_wal_senders have a check hook that verifies the sum of those GUCs does > not exceed a certain value. Then, in InitializeMaxBackends(), we do the > same check once more. Not only do the check hooks seem redundant, but I > think they might sometimes be inaccurate since some values might not yet be > initialized. Yeah, these per-variable checks are inherently bogus. If we can get of them and make the net user experience actually better, that's a win-win. It seems easier to do for these because they can't change after server start, so there can be one well-defined time to apply the consistency check. IIRC, we have some similar issues in other hooks for variables that aren't PGC_POSTMASTER, so it's harder to see how we might get rid of their cross-checks. That doesn't make them less bogus though. regards, tom lane
Nathan Bossart <nathandbossart@gmail.com> writes: > The attached patch removes these hooks and enhances the error message to > look like this: > FATAL: too many backends configured > DETAIL: "max_connections" (262100) plus "autovacuum_max_workers" (3) plus "max_worker_processes" (8) plus "max_wal_senders"(10000) must be less than 262142. BTW, I suggest writing it as "too many server processes configured", or perhaps "too many server processes required". "Backend" is too much of an insider term. regards, tom lane
On Wed, Jun 19, 2024 at 03:14:16PM -0400, Tom Lane wrote: > Nathan Bossart <nathandbossart@gmail.com> writes: >> The attached patch removes these hooks and enhances the error message to >> look like this: > >> FATAL: too many backends configured >> DETAIL: "max_connections" (262100) plus "autovacuum_max_workers" (3) plus "max_worker_processes" (8) plus "max_wal_senders"(10000) must be less than 262142. > > BTW, I suggest writing it as "too many server processes configured", > or perhaps "too many server processes required". "Backend" is too > much of an insider term. Will do, thanks for reviewing. -- nathan
Committed. -- nathan