On Fri, Apr 16, 2010 at 11:41 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:
> Wow.  Well, we have a smoking gun here: for some reason, autovacuum
> isn't running, or isn't doing its job if it is.  If it's not running
> at all, that would explain failure to prune the stats collector's file
> too.

Hrm, well autovacuum is at least trying to do work: it's currently
stuck on those bloated pg_catalog tables, of course. Another developer
killed an autovacuum of pg_attribute (or maybe it was pg_attrdef)
after it had been running for two weeks. See current pg_stat_activity
output attached, which shows the three autovacuum workers running plus
two manual VACUUM ANALYZEs I started yesterday.

> Is there anything in the postmaster log that would suggest autovac
> difficulties?

Yup, there are logs from April 1st which I just grepped through. I
attached the redacted output, and I see a few warnings about "[table]
contains more than "max_fsm_pages" pages with useful free space", as
well as "ERROR:  canceling autovacuum task".

Perhaps bumping up max_fsm_pages and making autovacuum settings more
aggressive will help me? I was also planning to run a CLUSTER of those
four bloated pg_catalog tables -- is this safe, particularly for
tables like pg_attrdef which rely on OIDs?

Josh
# SELECT * FROM pg_stat_activity WHERE usename = 'postgres' AND current_query 
ILIKE '%vacuum%';
  datid  |  datname   | procpid | usesysid | usename  |                         
                current_query                                         | waiting 
|          xact_start           |          query_start          |         
backend_start         |  client_addr  | client_port 
---------+------------+---------+----------+----------+-----------------------------------------------------------------------------------------------+---------+-------------------------------+-------------------------------+-------------------------------+---------------+-------------
 7651893 | master_dev |   20288 |       10 | postgres | VACUUM ANALYZE 
myschema.mytable;                                                  | f       | 
2010-04-14 16:24:51.421088+00 | 2010-04-14 16:24:51.421088+00 | 2010-04-14 
16:24:46.875911+00 | 192.168.24.63 |       54065
[snip SELECT * FROM pg_stat_activity]
   16389 | master     |    9596 |       10 | postgres | autovacuum: VACUUM 
ANALYZE pg_catalog.pg_attrdef                                              | f  
     | 2010-04-15 21:18:41.583044+00 | 2010-04-15 21:18:41.583044+00 | 
2010-04-01 11:25:53.903941+00 |               |            
   16389 | master     |   18043 |       10 | postgres | autovacuum: VACUUM 
ANALYZE pg_catalog.pg_attribute                                            | f  
     | 2010-04-15 17:18:36.071479+00 | 2010-04-15 17:18:36.071479+00 | 
2010-04-15 16:51:50.230827+00 |               |            
   16389 | master     |   19608 |       10 | postgres | autovacuum: VACUUM 
ANALYZE pg_catalog.pg_depend                                               | f  
     | 2010-04-15 16:26:41.941069+00 | 2010-04-15 16:26:41.941069+00 | 
2010-04-08 17:08:07.417122+00 |               |            
   16389 | master     |   20278 |       10 | postgres | VACUUM ANALYZE 
myschema.mytable;                                                  | f       | 
2010-04-14 16:24:35.7458+00   | 2010-04-14 16:24:35.7458+00   | 2010-04-14 
16:24:28.632431+00 | 192.168.24.63 |       54064
(6 rows)
# grep -A 2 -B 2 -i "vacuum" *.log
postgresql-2010-04-01_000000.log-2010-04-01 06:48:40 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-01_000000.log-2010-04-01 06:48:44 UTC    WARNING:  relation 
"pg_catalog.pg_depend" contains more than "max_fsm_pages" pages with useful 
free space
postgresql-2010-04-01_000000.log:2010-04-01 06:48:44 UTC    HINT:  Consider 
using VACUUM FULL on this relation or increasing the configuration parameter 
"max_fsm_pages".
postgresql-2010-04-01_000000.log-2010-04-01 06:48:51 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-01_000000.log-2010-04-01 06:48:52 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
--
[snip connection info]
postgresql-2010-04-01_000000.log-2010-04-01 10:41:38 UTC    WARNING:  relation 
"schema.table" contains more than "max_fsm_pages" pages with useful free space
postgresql-2010-04-01_000000.log:2010-04-01 10:41:38 UTC    HINT:  Consider 
using VACUUM FULL on this relation or increasing the configuration parameter 
"max_fsm_pages".
postgresql-2010-04-01_000000.log-2010-04-01 10:41:46 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-01_000000.log-2010-04-01 10:41:47 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
--
postgresql-2010-04-01_000000.log-2010-04-01 10:49:33 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-01_000000.log-2010-04-01 10:49:33 UTC    WARNING:  relation 
"pg_catalog.pg_depend" contains more than "max_fsm_pages" pages with useful 
free space
postgresql-2010-04-01_000000.log:2010-04-01 10:49:33 UTC    HINT:  Consider 
using VACUUM FULL on this relation or increasing the configuration parameter 
"max_fsm_pages".
postgresql-2010-04-01_000000.log-2010-04-01 10:49:35 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-01_000000.log-2010-04-01 10:49:35 UTC    LOG:  checkpoint 
complete: wrote 73013 buffers (7.0%); 0 transaction log file(s) added, 0 
removed, 57 recycled; write=179.914 s, sync=20.100 s, total=200.677 s
--
[snip connection info]
postgresql-2010-04-01_000000.log-2010-04-01 10:57:54 UTC    LOG:  process 9176 
still waiting for ShareUpdateExclusiveLock on relation 1214 of database 0 after 
1000.681 ms
postgresql-2010-04-01_000000.log:2010-04-01 10:57:54 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-01_000000.log:2010-04-01 10:57:54 UTC    CONTEXT:  automatic 
vacuum of table "confluence.pg_catalog.pg_shdepend"
postgresql-2010-04-01_000000.log-2010-04-01 10:57:54 UTC    LOG:  process 9176 
acquired ShareUpdateExclusiveLock on relation 1214 of database 0 after 1000.792 
ms
[snip connection info]
--
postgresql-2010-04-01_000000.log-2010-04-01 10:58:52 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-01_000000.log-2010-04-01 10:58:54 UTC    LOG:  process 9180 
still waiting for ShareUpdateExclusiveLock on relation 1214 of database 0 after 
1000.966 ms
postgresql-2010-04-01_000000.log:2010-04-01 10:58:54 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-01_000000.log:2010-04-01 10:58:54 UTC    CONTEXT:  automatic 
vacuum of table "postgres.pg_catalog.pg_shdepend"
postgresql-2010-04-01_000000.log-2010-04-01 10:58:54 UTC    LOG:  process 9180 
acquired ShareUpdateExclusiveLock on relation 1214 of database 0 after 1001.930 
ms
[snip connection info]
--
postgresql-2010-04-01_000000.log-2010-04-01 10:59:42 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-01_000000.log-2010-04-01 10:59:54 UTC    LOG:  process 9185 
still waiting for ShareUpdateExclusiveLock on relation 1214 of database 0 after 
1001.636 ms
postgresql-2010-04-01_000000.log:2010-04-01 10:59:54 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-01_000000.log:2010-04-01 10:59:54 UTC    CONTEXT:  automatic 
vacuum of table "jira.pg_catalog.pg_shdepend"
postgresql-2010-04-01_000000.log-2010-04-01 10:59:54 UTC    LOG:  process 9185 
acquired ShareUpdateExclusiveLock on relation 1214 of database 0 after 1004.599 
ms
[snip connection info]
--
postgresql-2010-04-01_000000.log-2010-04-01 11:00:42 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-01_000000.log-2010-04-01 11:00:55 UTC    LOG:  process 9196 
still waiting for ShareUpdateExclusiveLock on relation 1214 of database 0 after 
1000.494 ms
postgresql-2010-04-01_000000.log:2010-04-01 11:00:55 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-01_000000.log:2010-04-01 11:00:55 UTC    CONTEXT:  automatic 
vacuum of table "template1.pg_catalog.pg_shdepend"
postgresql-2010-04-01_000000.log-2010-04-01 11:00:55 UTC    LOG:  process 9196 
acquired ShareUpdateExclusiveLock on relation 1214 of database 0 after 1000.594 
ms
postgresql-2010-04-01_000000.log-2010-04-01 11:00:57 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
--
[snip connection info]
postgresql-2010-04-01_000000.log-2010-04-01 11:01:55 UTC    LOG:  process 9247 
still waiting for ShareUpdateExclusiveLock on relation 1214 of database 0 after 
1000.975 ms
postgresql-2010-04-01_000000.log:2010-04-01 11:01:55 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-01_000000.log:2010-04-01 11:01:55 UTC    CONTEXT:  automatic 
vacuum of table "master_dev.pg_catalog.pg_shdepend"
postgresql-2010-04-01_000000.log-2010-04-01 11:01:55 UTC    LOG:  process 9247 
acquired ShareUpdateExclusiveLock on relation 1214 of database 0 after 1002.192 
ms
[snip connection info]
--
[snip connection info]
postgresql-2010-04-01_000000.log-2010-04-01 11:08:54 UTC    LOG:  process 9333 
still waiting for ShareUpdateExclusiveLock on relation 1214 of database 0 after 
1001.076 ms
postgresql-2010-04-01_000000.log:2010-04-01 11:08:54 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-01_000000.log:2010-04-01 11:08:54 UTC    CONTEXT:  automatic 
vacuum of table "master.pg_catalog.pg_shdepend"
postgresql-2010-04-01_000000.log-2010-04-01 11:08:54 UTC    LOG:  process 9333 
acquired ShareUpdateExclusiveLock on relation 1214 of database 0 after 1001.170 
ms
[snip connection info]
--
[snip connection info]
postgresql-2010-04-05_000000.log-2010-04-05 22:31:34 UTC    WARNING:  relation 
"pg_catalog.pg_depend" contains more than "max_fsm_pages" pages with useful 
free space
postgresql-2010-04-05_000000.log:2010-04-05 22:31:34 UTC    HINT:  Consider 
using VACUUM FULL on this relation or increasing the configuration parameter 
"max_fsm_pages".
[snip connection info]
--
postgresql-2010-04-06_000000.log-2010-04-06 23:26:14 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-06_000000.log-2010-04-06 23:26:14 UTC    WARNING:  relation 
"pg_catalog.pg_attrdef" contains more than "max_fsm_pages" pages with useful 
free space
postgresql-2010-04-06_000000.log:2010-04-06 23:26:14 UTC    HINT:  Consider 
using VACUUM FULL on this relation or increasing the configuration parameter 
"max_fsm_pages".
postgresql-2010-04-06_000000.log-2010-04-06 23:26:14 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-06_000000.log-2010-04-06 23:26:14 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
--
postgresql-2010-04-06_000000.log-2010-04-06 23:38:13 UTC username1 1.2.3.4 
master LOG:  process 18579 still waiting for ExclusiveLock on relation 2614 of 
database 16389 after 1000.505 ms
postgresql-2010-04-06_000000.log-2010-04-06 23:38:13 UTC username1 1.2.3.4 
master STATEMENT:  COMMIT
postgresql-2010-04-06_000000.log:2010-04-06 23:38:13 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-06_000000.log:2010-04-06 23:38:13 UTC    CONTEXT:  automatic 
vacuum of table "master.pg_catalog.pg_listener"
postgresql-2010-04-06_000000.log-2010-04-06 23:38:13 UTC username1 1.2.3.4 
master LOG:  process 18579 acquired ExclusiveLock on relation 2614 of database 
16389 after 1000.594 ms
postgresql-2010-04-06_000000.log-2010-04-06 23:38:13 UTC username1 1.2.3.4 
master STATEMENT:  COMMIT
--
[snip connection info]
postgresql-2010-04-08_000000.log-2010-04-08 16:59:05 UTC    WARNING:  relation 
"schema.bigtable" contains more than "max_fsm_pages" pages with useful free 
space
postgresql-2010-04-08_000000.log:2010-04-08 16:59:05 UTC    HINT:  Consider 
using VACUUM FULL on this relation or increasing the configuration parameter 
"max_fsm_pages".
[snip connection info]
postgresql-2010-04-08_000000.log-2010-04-08 16:59:05 UTC username1 1.2.3.4 
master NOTICE:  there is no transaction in progress
--
postgresql-2010-04-08_000000.log-2010-04-08 19:40:14 UTC username1 1.2.3.4 
master STATEMENT:  CREATE TEMPORARY TABLE [snip]
postgresql-2010-04-08_000000.log-2010-04-08 19:40:14 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-08_000000.log:2010-04-08 19:40:14 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-08_000000.log:2010-04-08 19:40:14 UTC    CONTEXT:  automatic 
vacuum of table "master.pg_catalog.pg_type"
postgresql-2010-04-08_000000.log-2010-04-08 19:40:14 UTC username1 1.2.3.4 
master LOG:  process 15976 acquired AccessShareLock on relation 1247 of 
database 16389 after 1023.774 ms
postgresql-2010-04-08_000000.log-2010-04-08 19:40:14 UTC username1 1.2.3.4 
master STATEMENT:  CREATE TEMPORARY TABLE [snip]
--
postgresql-2010-04-11_000000.log-2010-04-11 11:50:44 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-11_000000.log-2010-04-11 11:50:44 UTC    WARNING:  relation 
"pg_catalog.pg_depend" contains more than "max_fsm_pages" pages with useful 
free space
postgresql-2010-04-11_000000.log:2010-04-11 11:50:44 UTC    HINT:  Consider 
using VACUUM FULL on this relation or increasing the configuration parameter 
"max_fsm_pages".
postgresql-2010-04-11_000000.log-2010-04-11 11:50:44 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-11_000000.log-2010-04-11 11:50:44 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
--
postgresql-2010-04-12_000000.log-2010-04-12 13:02:32 UTC postgres 1.2.3.5 
master LOG:  process 13047 still waiting for AccessExclusiveLock on relation 
25340122 of database 16389 after 1000.559 ms
postgresql-2010-04-12_000000.log-2010-04-12 13:02:32 UTC postgres 1.2.3.5 
master STATEMENT:  DROP TRIGGER IF EXISTS [snip]
postgresql-2010-04-12_000000.log:2010-04-12 13:02:32 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-12_000000.log:2010-04-12 13:02:32 UTC    CONTEXT:  automatic 
vacuum of table "master.schema.table"
postgresql-2010-04-12_000000.log-2010-04-12 13:02:32 UTC postgres 1.2.3.5 
master LOG:  process 13047 acquired AccessExclusiveLock on relation 25340122 of 
database 16389 after 1002.661 ms
postgresql-2010-04-12_000000.log-2010-04-12 13:02:32 UTC postgres 1.2.3.5 
master STATEMENT:  DROP TRIGGER IF EXISTS [snip]
--
postgresql-2010-04-13_000000.log-2010-04-13 17:41:46 UTC username1 1.2.3.4 
master LOG:  process 2725 still waiting for ExclusiveLock on relation 2614 of 
database 16389 after 1001.765 ms
postgresql-2010-04-13_000000.log-2010-04-13 17:41:46 UTC username1 1.2.3.4 
master STATEMENT:  COMMIT
postgresql-2010-04-13_000000.log:2010-04-13 17:41:46 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-13_000000.log:2010-04-13 17:41:46 UTC    CONTEXT:  automatic 
vacuum of table "master.pg_catalog.pg_listener"
postgresql-2010-04-13_000000.log-2010-04-13 17:41:46 UTC username1 1.2.3.4 
master LOG:  process 2725 acquired ExclusiveLock on relation 2614 of database 
16389 after 1001.886 ms
postgresql-2010-04-13_000000.log-2010-04-13 17:41:46 UTC username1 1.2.3.4 
master STATEMENT:  COMMIT
--
postgresql-2010-04-15_000000.log-2010-04-15 16:12:37 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-15_000000.log-2010-04-15 16:12:38 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-15_000000.log:2010-04-15 16:12:38 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-15_000000.log:2010-04-15 16:12:38 UTC    CONTEXT:  automatic 
vacuum of table "master.pg_catalog.pg_attrdef"
postgresql-2010-04-15_000000.log-2010-04-15 16:12:39 UTC username1 1.2.3.4 
master LOG:  process 9599 still waiting for AccessShareLock on relation 
11969189 of database 16389 after 1001.789 ms
postgresql-2010-04-15_000000.log-2010-04-15 16:12:39 UTC username1 1.2.3.4 
master STATEMENT:  CREATE TEMPORARY TABLE [snip]
--
postgresql-2010-04-15_000000.log-2010-04-15 16:12:44 UTC username1 1.2.3.4 
master LOG:  process 27873 still waiting for AccessShareLock on relation 
11969189 of database 16389 after 1000.468 ms
postgresql-2010-04-15_000000.log-2010-04-15 16:12:44 UTC username1 1.2.3.4 
master STATEMENT:  CREATE TEMPORARY TABLE [snip]
postgresql-2010-04-15_000000.log:2010-04-15 16:12:45 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-15_000000.log:2010-04-15 16:12:45 UTC    CONTEXT:  automatic 
vacuum of table "master.pg_catalog.pg_depend"
postgresql-2010-04-15_000000.log:2010-04-15 16:12:51 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-15_000000.log:2010-04-15 16:12:51 UTC    CONTEXT:  automatic 
vacuum of table "master.pg_catalog.pg_attribute"
[snip connection info]
--
postgresql-2010-04-15_000000.log-2010-04-15 16:26:41 UTC username1 1.2.3.4 
master LOG:  process 16378 still waiting for ExclusiveLock on relation 2614 of 
database 16389 after 1001.038 ms
postgresql-2010-04-15_000000.log-2010-04-15 16:26:41 UTC username1 1.2.3.4 
master STATEMENT:  COMMIT
postgresql-2010-04-15_000000.log:2010-04-15 16:26:41 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-15_000000.log:2010-04-15 16:26:41 UTC    CONTEXT:  automatic 
vacuum of table "master.pg_catalog.pg_listener"
postgresql-2010-04-15_000000.log-2010-04-15 16:26:41 UTC username1 1.2.3.4 
master LOG:  process 16378 acquired ExclusiveLock on relation 2614 of database 
16389 after 1001.166 ms
postgresql-2010-04-15_000000.log-2010-04-15 16:26:41 UTC username1 1.2.3.4 
master STATEMENT:  COMMIT
--
postgresql-2010-04-15_000000.log-2010-04-15 16:32:37 UTC username1 1.2.3.4 
master LOG:  process 16702 still waiting for AccessExclusiveLock on relation 
11969302 of database 16389 after 1000.550 ms
postgresql-2010-04-15_000000.log-2010-04-15 16:32:37 UTC username1 1.2.3.4 
master STATEMENT:  DROP INDEX IF EXISTS [snip]
postgresql-2010-04-15_000000.log:2010-04-15 16:32:37 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-15_000000.log-2010-04-15 16:32:37 UTC    CONTEXT:  automatic 
analyze of table "master.schema.another_big_table"
postgresql-2010-04-15_000000.log-2010-04-15 16:32:37 UTC username1 1.2.3.4 
master LOG:  process 16702 acquired AccessExclusiveLock on relation 11969302 of 
database 16389 after 1000.621 ms
--
postgresql-2010-04-15_000000.log-2010-04-15 17:18:36 UTC username1 1.2.3.4 
master LOG:  process 9599 acquired AccessShareLock on relation 1247 of database 
16389 after 1644.619 ms
postgresql-2010-04-15_000000.log-2010-04-15 17:18:36 UTC username1 1.2.3.4 
master STATEMENT:  CREATE TEMPORARY TABLE [snip]
postgresql-2010-04-15_000000.log:2010-04-15 17:18:36 UTC    ERROR:  canceling 
autovacuum task
postgresql-2010-04-15_000000.log:2010-04-15 17:18:36 UTC    CONTEXT:  automatic 
vacuum of table "master.pg_catalog.pg_type"
postgresql-2010-04-15_000000.log-2010-04-15 17:18:36 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
postgresql-2010-04-15_000000.log-2010-04-15 17:18:36 UTC username1 1.2.3.4 
master WARNING:  there is already a transaction in progress
--
-- 
Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-performance

Reply via email to