Обсуждение: BUG #5767: Memory Leak
The following bug has been logged online: Bug reference: 5767 Logged by: Darryl Pye Email address: darrylpye@hotmail.com PostgreSQL version: 9.01 Operating system: Windows Server 2008 Description: Memory Leak Details: A single postgres process appears to be constantly growing in memory usage until it reaches 100% of memory on the machine. I have rebooted the server and the problem goes away but then a single postgres.exe process continues to eat memory until it uses all available ram then i have to restart again. Machine has 4 gig of ram available. I am able to watch the process grow constantly at approximately 8kb every second. Until it reaches 4gig. I have made the following configuration changes from default shared_buffers = 1GB wal_buffers = 1MB effective_cache_size = 2GB
On Thu, Nov 25, 2010 at 05:28, Darryl Pye <darrylpye@hotmail.com> wrote: > > The following bug has been logged online: > > Bug reference: =A0 =A0 =A05767 > Logged by: =A0 =A0 =A0 =A0 =A0Darryl Pye > Email address: =A0 =A0 =A0darrylpye@hotmail.com > PostgreSQL version: 9.01 > Operating system: =A0 Windows Server =A02008 > Description: =A0 =A0 =A0 =A0Memory Leak > Details: > > A single postgres =A0process =A0appears to be constantly growing in memor= y usage > =A0until it reaches 100% of memory on the machine. > > I have rebooted the server and the problem goes away but then =A0a single > postgres.exe process continues to =A0eat memory until it uses all availab= le > ram then i have to restart again. > > Machine has 4 gig of ram available. > I am able to watch the process grow constantly at approximately =A08kb ev= ery > second. > > Until it reaches =A04gig. > > I have made the following configuration changes from default > shared_buffers =3D 1GB > wal_buffers =3D 1MB > effective_cache_size =3D 2GB What are your work_mem and maintenance_work_mem settings? And which of the postgres processes is it, and what's it doing? You can use Process Explorer to look at the process, and find a handle called something starting with "pgident" - that one will contain a description of the process, just like the title does on Unix. Or you can look up the process id in the pg_stat_activity view to identify it. --=20 =A0Magnus Hagander =A0Me: http://www.hagander.net/ =A0Work: http://www.redpill-linpro.com/
On 11/25/2010 12:28 PM, Darryl Pye wrote: > PostgreSQL version: 9.01 32-bit or 64-bit ? > A single postgres process appears to be constantly growing in memory usage > until it reaches 100% of memory on the machine. How are you watching it? Task manager? You need to use something that can differentiate between the shared memory block and the per-task private memory. Process Explorer can do that, IIRC. > I have rebooted the server and the problem goes away but then a single > postgres.exe process continues to eat memory until it uses all available > ram then i have to restart again. Are you able to identify which postgres process it is? Is it shown in "SELECT * from pg_stat_activity;" ? Is it one of the postgres processes that appears when PostgreSQL is first started, before any connections are made to the database server? Are you sure you're not looking at totals for all postgres.exe instances? > I have made the following configuration changes from default > shared_buffers = 1GB > wal_buffers = 1MB > effective_cache_size = 2GB With those settings, you should expect PostgreSQL to appear to use a bit over 1GB of RAM per postgres.exe, though the vast majority of that 1GB should be shared between all the postgres.exe processes so the total memory of all postgres.exe instances will appear to vastly exceed your machine's RAM. That's just because of the bad accounting for shared memory in most OSes, including windows, and doesn't affect how it runs. -- Craig Ringer