Thread: autovacuum with lots of open file references to deleted files
Hello. On this box I drop a 80GB database each night followed by a restore of a similar sized database. It is a restore of our productiondatabase to a development server. This box is running 9.2rc1 (sorry). du and df reported quite different numbers and lsof show that autovacuum is holding lots of deleted files. After killingthe autovacuum daemon, some disk space was restored and the du and df numbers was more equal. autovacuum hold roughly 100GB of deleted files. This running PostgreSQL instance has dumped/restored the 80GB database ~20times. Is this something that has been fixed in PostgreSQL or that can be fixed? Or am I doing something wrong? - besides runninga release candidate.. postmaste 28573 postgres 360u REG 8,1 1073741824 18319099 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.10(deleted) postmaste 28573 postgres 361u REG 8,1 1073741824 18319095 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.11(deleted) postmaste 28573 postgres 362u REG 8,1 1073741824 18319101 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.12(deleted) postmaste 28573 postgres 363u REG 8,1 1073741824 18319102 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.13(deleted) postmaste 28573 postgres 364u REG 8,1 1073741824 18319103 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.14(deleted) postmaste 28573 postgres 365u REG 8,1 1073741824 18319100 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.15(deleted) postmaste 28573 postgres 366u REG 8,1 1073741824 18319105 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.16(deleted) postmaste 28573 postgres 367u REG 8,1 1073741824 18319108 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.21(deleted) postmaste 28573 postgres 368u REG 8,1 1073741824 18319111 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.22(deleted) postmaste 28573 postgres 369u REG 8,1 1073741824 18319110 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.23(deleted) postmaste 28573 postgres 370u REG 8,1 1073741824 18319112 /usr/local/postgresql-9.2rc1/data/base/3211526/11991.25(deleted) # ps auxww|grep 28573 root 22536 0.0 0.0 7372 880 pts/0 S+ 23:36 0:00 grep 28573 postgres 28573 0.0 0.2 61372 38048 ? Ss Sep07 44:34 postgres: autovacuum launcher process Regards, Tore Halset.
Tore Halset <halset@pvv.ntnu.no> writes: > On this box I drop a 80GB database each night followed by a restore of a similar sized database. It is a restore of ourproduction database to a development server. This box is running 9.2rc1 (sorry). > du and df reported quite different numbers and lsof show that autovacuum is holding lots of deleted files. After killingthe autovacuum daemon, some disk space was restored and the du and df numbers was more equal. > autovacuum hold roughly 100GB of deleted files. This running PostgreSQL instance has dumped/restored the 80GB database~20 times. Hm. I've been able to reproduce some leakage of file descriptors in the autovac launcher, but it required (a) fairly small shared_buffers and (b) very heavy update activity on large tables. So I'm not sure that it would explain the consistent leakage you seem to be seeing. Can you tell us more about your usage pattern on the development server? What nondefault settings are you using on it? regards, tom lane
On Oct 15, 2012, at 2:27 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Tore Halset <halset@pvv.ntnu.no> writes: >> On this box I drop a 80GB database each night followed by a restore of a similar sized database. It is a restore of ourproduction database to a development server. This box is running 9.2rc1 (sorry). > >> du and df reported quite different numbers and lsof show that autovacuum is holding lots of deleted files. After killingthe autovacuum daemon, some disk space was restored and the du and df numbers was more equal. > >> autovacuum hold roughly 100GB of deleted files. This running PostgreSQL instance has dumped/restored the 80GB database~20 times. > > Hm. I've been able to reproduce some leakage of file descriptors in the > autovac launcher, but it required (a) fairly small shared_buffers and > (b) very heavy update activity on large tables. So I'm not sure that it > would explain the consistent leakage you seem to be seeing. Can you > tell us more about your usage pattern on the development server? A cron job dropdb one of the databases and createdb it and then pg_restore. Roughly 80GB dump. In addition to that database, we have some other copies that are used by some java clients. Only light usage. Not any storedprocedures, but a lot of blobs. None of the blobs are over 5MB in size. lsof show that both autovacuum and idle postgres-processes hold references to deleted files. Out production PostgreSQL running a 9.1 variant does not have this problem. It does not have the nightly dropdb/createdb/pg_restore,but otherwise similar usage patterins. It is also configured to use more memory. > What > nondefault settings are you using on it? it is pretty default. max_connections = 100 shared_buffers = 32MB Regards, Tore Halset.
Tore Halset <halset@pvv.ntnu.no> writes: > On Oct 15, 2012, at 2:27 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Tore Halset <halset@pvv.ntnu.no> writes: >>> On this box I drop a 80GB database each night followed by a restore of a similar sized database. It is a restore of ourproduction database to a development server. This box is running 9.2rc1 (sorry). >>> du and df reported quite different numbers and lsof show that autovacuum is holding lots of deleted files. After killingthe autovacuum daemon, some disk space was restored and the du and df numbers was more equal. >> Hm. I've been able to reproduce some leakage of file descriptors in the >> autovac launcher, but it required (a) fairly small shared_buffers and >> (b) very heavy update activity on large tables. So I'm not sure that it >> would explain the consistent leakage you seem to be seeing. Can you >> tell us more about your usage pattern on the development server? > A cron job dropdb one of the databases and createdb it and then pg_restore. Roughly 80GB dump. So far, my guess is that this is fixed by commits a1f064fc2 + d7598aeea. > Out production PostgreSQL running a 9.1 variant does not have this problem. It does not have the nightly dropdb/createdb/pg_restore,but otherwise similar usage patterins. It is also configured to use more memory. 9.1 has the same bug (and the same patches), but I think that the aspect you're running into is specific to DROP DATABASE scenarios. regards, tom lane
Tom -- <...> >> A cron job dropdb one of the databases and createdb it and then pg_restore. > Roughly 80GB dump. > > So far, my guess is that this is fixed by commits a1f064fc2 + d7598aeea. > >> Out production PostgreSQL running a 9.1 variant does not have this problem. > It does not have the nightly dropdb/createdb/pg_restore, but otherwise similar > usage patterins. It is also configured to use more memory. > > 9.1 has the same bug (and the same patches), but I think that the aspect > you're running into is specific to DROP DATABASE scenarios. > Is there any idea of when this will be released ? Thanks, Greg W.
Greg Williamson <gwilliamson39@yahoo.com> writes: >> So far, my guess is that this is fixed by commits a1f064fc2 + d7598aeea. > Is there any idea of when this will be released ? No. I'd guess that there will be update releases before the end of the year, but they are not imminent. We have some open issues that have to be settled first, notably http://archives.postgresql.org/pgsql-hackers/2012-10/msg00511.php regards, tom lane