On 2019-12-19 10:33, James Sewell wrote:
I have a system which is giving me the log hint to increase max_locks_per_transaction. This is somewhat expected due to the workload - but what I can't understand is the numbers:

Based on the docs I calculate my theoretical max locks as:

max_locks_per_transaction * (max_connections + max_prepared_transactions)
256 * (600 + 0) = *153600*

However, looking at my Prometheus monitoring (polling every 15s) which does a SELECT from pg_locks and groups by mode I can see there are over 500K AccessShareLocks consistently (up to around 570K at peak).

max_locks_per_transactions only affects relation locks (also known as heavy weight locks), but pg_locks also shows other kinds of locks. Filter by locktype = 'relation' to get the appropriate view.

--
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Reply via email to