Re: Maximum number of WAL files in the pg_xlog directory - Mailing list pgsql-hackers

From Jeff Janes
Subject Re: Maximum number of WAL files in the pg_xlog directory
Date
Msg-id CAMkU=1zEVmRFW0062xw-Zd_Ju5GQpS2QLwwsRvKxJP6Fewj+NA@mail.gmail.com
Whole thread Raw
In response to Maximum number of WAL files in the pg_xlog directory  (Guillaume Lelarge <guillaume@lelarge.info>)
Responses Re: Maximum number of WAL files in the pg_xlog directory
Re: Maximum number of WAL files in the pg_xlog directory
List pgsql-hackers
On Fri, Aug 8, 2014 at 12:08 AM, Guillaume Lelarge <guillaume@lelarge.info> wrote:
Hi,

As part of our monitoring work for our customers, we stumbled upon an issue with our customers' servers who have a wal_keep_segments setting higher than 0.

We have a monitoring script that checks the number of WAL files in the pg_xlog directory, according to the setting of three parameters (checkpoint_completion_target, checkpoint_segments, and wal_keep_segments). We usually add a percentage to the usual formula:

greatest(
  (2 + checkpoint_completion_target) * checkpoint_segments + 1,
  checkpoint_segments + wal_keep_segments + 1
)

I think the first bug is even having this formula in the documentation to start with, and in trying to use it.

"and will normally not be more than..."

This may be "normal" for a toy system.  I think that the normal state for any system worth monitoring is that it has had load spikes at some point in the past.  

So it is the next part of the doc, which describes how many segments it climbs back down to upon recovering from a spike, which is the important one.  And that doesn't mention wal_keep_segments at all, which surely cannot be correct.

I will try to independently derive the correct formula from the code, as you did, without looking too much at your derivation  first, and see if we get the same answer.

Cheers,

Jeff

pgsql-hackers by date:

Previous
From: Claudio Freire
Date:
Subject: Re: Column Redaction
Next
From: Andres Freund
Date:
Subject: Re: WIP: dynahash replacement for buffer table