Re: query against pg_locks leads to large memory alloc

From: Kevin Grittner <kgrittn(at)ymail(dot)com>
To: Dave Owens <dave(at)teamunify(dot)com>, Merlin Moncure <mmoncure(at)gmail(dot)com>
Cc: Matheus de Oliveira <matioli(dot)matheus(at)gmail(dot)com>, postgres performance list <pgsql-performance(at)postgresql(dot)org>
Subject: Re: query against pg_locks leads to large memory alloc
Date: 2014-08-18 22:01:47
Message-ID: 1408399307.93048.YahooMailNeo@web122304.mail.ne1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Dave Owens <dave(at)teamunify(dot)com> wrote:

> max_connections = 450 ...we have found that we run out of shared
> memory when max_pred_locks_per_transaction is less than 30k.

>> SELECT COUNT(*) from pg_locks;
>
> ERROR:  invalid memory alloc request size 1562436816

It gathers the information in memory to return for all those locks
(I think both the normal heavyweight locks and the predicate locks
do that).  450 * 30000 is 13.5 million predicate locks you could
have, so they don't need a very big structure per lock to start
adding up.  I guess we should refactor that to use a tuplestore, so
it can spill to disk when it gets to be more than work_mem.

--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Tom Lane 2014-08-18 23:24:33 Re: query against pg_locks leads to large memory alloc
Previous Message Dave Owens 2014-08-18 21:36:52 Re: query against pg_locks leads to large memory alloc