Re: [HACKERS] Re: postgres memory management

From: Alfred Perlstein <bright(at)wintelcom(dot)net>
To: Peter Mount <peter(at)retep(dot)org(dot)uk>
Cc: Alexander Jerusalem <ajeru(at)gmx(dot)net>, pgsql-general(at)postgresql(dot)org, pgsql-hackers(at)postgresql(dot)org, pgsql-jdbc(at)postgresql(dot)org
Subject: Re: [HACKERS] Re: postgres memory management
Date: 2001-01-22 21:29:55
Message-ID: 20010122132954.F26076@fw.wintelcom.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers pgsql-jdbc

* Peter Mount <peter(at)retep(dot)org(dot)uk> [010122 13:21] wrote:
> At 13:18 21/01/01 +0100, Alexander Jerusalem wrote:
> >Hi all,
> >
> >I'm experiencing some strange behaviour with postgresql 7.0.3 on Red Hat
> >Linux 7. I'm sending lots of insert statements to the postgresql server
> >from another machine via JDBC. During that process postgresql continues to
> >take up more and more memory and seemingly never returns it to the system.
> >Oddly if I watch the postmaster and it's sub processes in ktop, I can't
> >see which process takes up this memory. ktop shows that the postgresql
> >related processes have a constant memory usage but the overall memory
> >usage always increases as long as I continue to send insert statements.
> >
> >When the database connection is closed, no memory is reclaimed, the
> >overall memory usage stays the same. And when I close down all postgresql
> >processes including postmaster, it's the same.
> >I'm rather new to Linux and postgresql so I'm not sure if I should call
> >this a memory leak :-)
> >Has anybody experienced a similar thing?
>
> I'm not sure myself. You can rule out JDBC (or Java) here as you say you
> are connecting from another machine.
>
> When your JDBC app closes, does it call the connection's close() method?
> Does any messages like "Unexpected EOF from client" appear on the server side?
>
> The only other thing that comes to mine is possibly something weird is
> happening with IPC. After you closed down postgres, does ipcclean free up
> any memory?

I don't know if this is valid for Linux, but it is how FreeBSD
works, for the most part used memory is never free'd, it is only
marked as reclaimable. This is so the system can cache more data.
On a freshly booted FreeBSD box you'll have a lot of 'free' memory,
after the box has been running for a long time the 'free' memory
will probably never go higher that 10megs, the rest is being used
as cache.

The main things you have to worry about is:
a) really running out of memory (are you useing a lot of swap?)
b) not cleaning up IPC as Peter suggested.

--
-Alfred Perlstein - [bright(at)wintelcom(dot)net|alfred(at)freebsd(dot)org]
"I have the heart of a child; I keep it in a jar on my desk."

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Nelio Alves Pereira Filho 2001-01-22 21:34:33 miliseconds
Previous Message The Hermit Hacker 2001-01-22 21:21:23 Re: Why does the JDBC driver not support prepareCall?

Browse pgsql-hackers by date

  From Date Subject
Next Message Hannu Krosing 2001-01-22 22:01:38 Re: AW: like and optimization
Previous Message Zeugswetter Andreas SB 2001-01-22 20:49:29 AW: AW: Re: MySQL and BerkleyDB (fwd)

Browse pgsql-jdbc by date

  From Date Subject
Next Message Peter Mount 2001-01-22 22:04:07 Re: JDBC2 question -- can't find files needed
Previous Message The Hermit Hacker 2001-01-22 21:21:23 Re: Why does the JDBC driver not support prepareCall?