From: | Peter Hunčár <hunci(at)hunci(dot)sk> |
---|---|
To: | Andres Freund <andres(at)anarazel(dot)de>, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Multixact members limit exceeded |
Date: | 2017-08-09 21:27:32 |
Message-ID: | CADOjABkHbFvbEoLcXfnA7HqWPR4t0MQ=fwLM3BCFmRGNLTnDSw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hello,
there are currently no transactions whatsoever, the app is paused. I can
even restart the database if needed.
I ran vacuum full, because as I mentioned above it seemed to me that manual
vacuum did not change the relminmxid of a table.
Unfortunately, an upgrade is not an option :(
name | setting
-------------------------------------+-----------
autovacuum | on
autovacuum_analyze_scale_factor | 0.1
autovacuum_analyze_threshold | 50
autovacuum_freeze_max_age | 200000000
autovacuum_max_workers | 3
autovacuum_multixact_freeze_max_age | 400000000
autovacuum_naptime | 60
autovacuum_vacuum_cost_delay | 10
autovacuum_vacuum_cost_limit | -1
autovacuum_vacuum_scale_factor | 0.2
autovacuum_vacuum_threshold | 50
autovacuum_work_mem | -1
log_autovacuum_min_duration | -1
vacuum_cost_delay | 0
vacuum_cost_limit | 2000
vacuum_cost_page_dirty | 20
vacuum_cost_page_hit | 1
vacuum_cost_page_miss | 10
vacuum_defer_cleanup_age | 0
vacuum_freeze_min_age | 50000000
vacuum_freeze_table_age | 150000000
vacuum_multixact_freeze_min_age | 3000000
vacuum_multixact_freeze_table_age | 140000000
The default vacuum_multixact_freeze_min_age is 5M according to the doc, but
according to the documentation, it's limited silently to half of
autovacuum_multixact_freeze_max_age.
So I guess I have to get those 400M to much lower number?
Thank you very much
Peter
On Wed, Aug 9, 2017 at 10:39 PM Andres Freund <andres(at)anarazel(dot)de> wrote:
> Hi,
>
> On 2017-08-09 16:30:03 -0400, Alvaro Herrera wrote:
>
> > > One particular table before vacuum full:
> > >
> > > relname | relminmxid | table_size
> > > ------------------------------+------------+------------
> > > delayed_jobs | 1554151198 | 21 GB
> > >
> > > And after vacuum full:
> > >
> > > relname | relminmxid | table_size
> > > --------------+------------+------------
> > > delayed_jobs | 1554155465 | 6899 MB
> > >
> > > Shouldn't be the relminmxid changed after vacuum full, or am I not
> > > understanding something?
>
> FWIW, VACUUM FULL isn't a good tool to use here. It's commonly way more
> expensive than a normal vacuum (it rewrites the entire table, and
> rebuilds indexes).
>
>
> > But it did change ... the problem is that it didn't change enough (only
> > 4000 multixacts). Maybe your multixact freeze min age is too high?
> > Getting rid of 15 GB of bloat is a good side effect, though, I'm sure.
>
> I wonder if there's longrunning transactions preventing cleanup. I
> suggest checking pg_stat_activity, pg_prepared_xacts,
> pg_replication_slot for older stuff.
>
> Greetings,
>
> Andres Freund
>
From | Date | Subject | |
---|---|---|---|
Next Message | marcelo | 2017-08-09 21:28:25 | Re: ErrorCode=-2147467259 storing a .net string |
Previous Message | marcelo | 2017-08-09 20:49:30 | ErrorCode=-2147467259 storing a .net string |