Обсуждение: postmaster grows
Hi. I have a RedHat Linux 6.2 (kernel 2.2.18pre1 SMP) on Intel platform. Postgres-7.0.3-2 (RPM). It grows. Initially about 5mb it grows to 60-70 mb after 2-3 weeks. I use plpgsql. If it does matter, server have a chrooted area. Postgres is running in root but accessed both from root and from chroot (via hardlinked socket /tmp/.s.PGSQL.5432) Some times ago i upgraded it from 7.0.2 version, that grew too. -- ó Õ×ÁÖÅÎÉÅÍ, ÷ÁÝÅÎËÏ íÁËÓÉÍ, îÉÖÅÇÏÒÏÄÓËÉÅ ÉÎÆÏÒÍÁÃÉÏÎÎÙÅ ÓÅÔÉ (8312) 30-19-05, 34-00-02, 30-09-73 With best regards, Max Vaschenko, Nizhny Novgorod Information Networks.
Max Vaschenko <max@nino.ru> writes:
> I have a RedHat Linux 6.2 (kernel 2.2.18pre1 SMP) on Intel platform.
> Postgres-7.0.3-2 (RPM).
> It grows. Initially about 5mb it grows to 60-70 mb after 2-3 weeks.
Is this the *postmaster* that's growing, or an individual backend that
you've kept running for a long time?
We've fixed a fair number of memory leaks in the backend since 7.0.*,
but there aren't any known leaks in the postmaster ...
regards, tom lane
Tom Lane wrote: > > Max Vaschenko <max@nino.ru> writes: > > I have a RedHat Linux 6.2 (kernel 2.2.18pre1 SMP) on Intel platform. > > Postgres-7.0.3-2 (RPM). > > It grows. Initially about 5mb it grows to 60-70 mb after 2-3 weeks. > > Is this the *postmaster* that's growing, or an individual backend that > you've kept running for a long time? One backend is running long time (2-3 weeks), but i don't pay attension on it. Growing affected on both postmaster and individual backends (running usually less than 1 minute). After some (2-3 weeks) time both postmaster and all (every) backends take about 60mb memory. > > We've fixed a fair number of memory leaks in the backend since 7.0.*, > but there aren't any known leaks in the postmaster ... May be backend that running long time, causes other postgres processes to grow? > > regards, tom lane -- ó Õ×ÁÖÅÎÉÅÍ, ÷ÁÝÅÎËÏ íÁËÓÉÍ, îÉÖÅÇÏÒÏÄÓËÉÅ ÉÎÆÏÒÍÁÃÉÏÎÎÙÅ ÓÅÔÉ (8312) 30-19-05, 34-00-02, 30-09-73 With best regards, Max Vaschenko, Nizhny Novgorod Information Networks.
Max Vaschenko <max@nino.ru> writes:
> After some (2-3 weeks) time both postmaster and all (every) backends take
> about 60mb memory.
Okay, then it is a postmaster leak. The backends are started by fork
from the postmaster, so they'd inherit whatever data memory size the
postmaster currently has.
> May be backend that running long time, causes other postgres processes
> to grow?
Not possible for a backend to affect the postmaster like that, AFAICS.
I think it's just a garden-variety memory leak in some postmaster
operation.
Since this isn't being reported by other folks, either there's a
system-specific problem or you are using a postmaster feature that's not
widely used. RedHat 6.2 is pretty common so we can probably eliminate
system-specific issues. Which authentication method(s) do you use?
(If you could send your whole pg_hba.conf file, that might be useful to
look at.)
regards, tom lane
Tom Lane wrote: > > Max Vaschenko <max@nino.ru> writes: > > After some (2-3 weeks) time both postmaster and all (every) backends take > > about 60mb memory. > > Okay, then it is a postmaster leak. The backends are started by fork > from the postmaster, so they'd inherit whatever data memory size the > postmaster currently has. > > > May be backend that running long time, causes other postgres processes > > to grow? > > Not possible for a backend to affect the postmaster like that, AFAICS. > I think it's just a garden-variety memory leak in some postmaster > operation. > > Since this isn't being reported by other folks, either there's a > system-specific problem or you are using a postmaster feature that's not > widely used. RedHat 6.2 is pretty common so we can probably eliminate > system-specific issues. Which authentication method(s) do you use? > (If you could send your whole pg_hba.conf file, that might be useful to > look at.) ----- pg_hba.conf -- local all password host all 127.0.0.1 255.255.255.255 password host all xxx.xx.x.xx 255.255.255.255 password host all xxx.xx.x.xx 255.255.255.255 password host all xxx.xx.x.xx 255.255.255.255 password host all xxx.xx.x.xx 255.255.255.255 password -------------------- Four databases with some simple plpgsql triggers. Access to postgres from C and PHP3. > > regards, tom lane -- ó Õ×ÁÖÅÎÉÅÍ, ÷ÁÝÅÎËÏ íÁËÓÉÍ, îÉÖÅÇÏÒÏÄÓËÉÅ ÉÎÆÏÒÍÁÃÉÏÎÎÙÅ ÓÅÔÉ (8312) 30-19-05, 34-00-02, 30-09-73 With best regards, Max Vaschenko, Nizhny Novgorod Information Networks.
Max Vaschenko <max@nino.ru> writes:
> [ postmaster leaks memory when using password authentication ]
You are right! The postmaster leaks memory to the tune of a few dozen
bytes per password authentication attempt. I'm surprised no one noticed
this before. People must not be using password auth under heavy load...
Attached is a patch to fix it in 7.0.*.
regards, tom lane
*** src/backend/libpq/crypt.c.orig Sat Jul 17 16:17:01 1999
--- src/backend/libpq/crypt.c Wed Feb 7 18:40:01 2001
***************
*** 59,64 ****
--- 59,65 ----
bufsize = strlen(pwdfilename) + strlen(CRYPT_PWD_RELOAD_SUFX) + 1;
rpfnam = (char *) palloc(bufsize);
snprintf(rpfnam, bufsize, "%s%s", pwdfilename, CRYPT_PWD_RELOAD_SUFX);
+ pfree(pwdfilename);
return rpfnam;
}
***************
*** 79,84 ****
--- 80,87 ----
pwdfile = AllocateFile(filename, "rb");
#endif
+ pfree(filename);
+
return pwdfile;
}
***************
*** 131,136 ****
--- 134,140 ----
filename = crypt_getpwdreloadfilename();
result = unlink(filename);
+ pfree(filename);
/*
* We want to delete the flag file before reading the contents of the