Search Postgresql Archives

Re: Is there any problem with pg_notify and memory consumption?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Per-Olov Esgard <Per-Olov.Esgard@xxxxxxxxxxxxxxxxxxx> writes:
> This is my setup:
> - linux kernel 2.6.20.16 in a custom OS installation based on Fedora Core 
> 3, yes I know, stone age :-)
> - memory 512 MB
> - swap 512 MB
> - cpu p4 2.8 GHz - single core - no hyper threading
> - db encoding UTF-8
> - client encoding default Latin-1 (Linux client) but UTF-8 used for 
> Windows clients 
> - postgresql.conf is attached as well as the environment variables
> - we  build the postgres server ourselves and the dev env is the same as 
> the target env  (no cross compilation).

Hah, I replicated the problem.  Here is what's going on: the main loop
in PostgresMain is intended to do its work in MessageContext.  But if
ProcessCompletedNotifies does any work, it exits with
CurrentMemoryContext having been reset to TopMemoryContext during
transaction commit.  This means any memory that the main loop doesn't
bother to explicitly free during the next command cycle will get leaked.
The reason we haven't noticed this seems to be that the only case where
any such memory does get leaked is if we have to do encoding conversion
on the incoming command.  Also, the bug has only been there since 9.0.

I think the right fix is to make sure that ProcessCompletedNotifies
saves and restores the call-time CurrentMemoryContext.

			regards, tom lane

-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux