Обсуждение: [PERFORM] Postgres uses too much RAM

Поиск
Список
Период
Сортировка

[PERFORM] Postgres uses too much RAM

От
Hans Braxmeier
Дата:

Hello,


on our old server (120 GB RAM) PostgreSQL 9.4.5 was using less than 10 GB of ram. On our new server (same system) Postgres 9.4.11 is using up to 40 GB Ram. Especially each idle process is consuming 2.4 GB: postgres  30764  8.3  2.4 3358400 3215920 ? Ss 21:58 0:24 postgres: testuser testdb [local] idle                                                                                      


Summing up PG needs currently 72.14GB (also the slab_cache was increasing from 20 GB to 40 GB. ). For monitoring we are using munin. Is this a bug of 9.4.11 or what could be wrong?

postgresmain.conf did not change:

max_connections = 40 
effective_cache_size = 64GB
shared_buffers = 1GB
work_mem = 8MB
checkpoint_segments = 32
checkpoint_timeout = 10min
checkpoint_completion_target = 0.9
checkpoint_warning = 30s
constraint_exclusion = off

Thanks, Hans

Re: [PERFORM] Postgres uses too much RAM

От
Merlin Moncure
Дата:
On Mon, May 8, 2017 at 3:23 PM, Hans Braxmeier
<hans.braxmeier@outlook.com> wrote:
> Hello,
>
>
> on our old server (120 GB RAM) PostgreSQL 9.4.5 was using less than 10 GB of
> ram. On our new server (same system) Postgres 9.4.11 is using up to 40 GB
> Ram. Especially each idle process is consuming 2.4 GB: postgres  30764  8.3
> 2.4 3358400 3215920 ? Ss 21:58 0:24 postgres: testuser testdb [local] idle
>
>
> Summing up PG needs currently 72.14GB (also the slab_cache was increasing
> from 20 GB to 40 GB. ). For monitoring we are using munin. Is this a bug of
> 9.4.11 or what could be wrong?

can you paste unredacted snippet from, say, 'top'?   A common
measuring error is to assume that shared memory usage is specific
cumulative to each process rather than from a shared pool.  It's hard
to say either way from your info above.

If you do have extremely high resident memory usage, culprits might be:
*) bona fide memory leak (although this is rare)
*) bloat in the cache context (relcache, plancache, etc), especially
if you have huge numbers of tables.  workaround is to recycle
processes occasionally and/or use pgbouncer
*) 3rd party package attached to the postgres process (say, pl/java).

merlin