On Tue, Apr 1, 2008 at 5:31 PM, Greg Smith <[EMAIL PROTECTED]> wrote:
> On Tue, 1 Apr 2008, mark wrote: > > current settings all default > > > #checkpoint_segments = 3 > > > #checkpoint_timeout = 5min > > > #checkpoint_completion_target = 0.5 > > > #checkpoint_warning = 30s > > > > > > > this is what I have on pg_stat_bgwriter ; how much should I increase > > checkpoint_segment & checkpoint_completion_target to? thanks a lot! > > > > postgres=# select * from pg_stat_bgwriter; > > checkpoints_timed | checkpoints_req | buffers_checkpoint | buffers_clean > > | > > 42 | 1051 | 8035125 | 21954 > > | > > maxwritten_clean | buffers_backend | buffers_alloc > > 42 | 241519 | 10394696 > > > > That means that 96% of the time, you are hitting a checkpoint because of > activity in less than 5 minutes after the previous one. And 97% of the > dirty buffers written out are being done by the checkpoint process. Your > system is spending its entire life doing checkpoint work and it's no wonder > response time is slow quite regularly. this really clear! Thannks!! > Increasing checkpoint_segments uses up more disk space for the WAL files > and increases the amount of time it will take to recover from a crash. If > neither of those two things matter to you, you can easily bump that > parameter up to 100 or more. I'd suggest starting with an order of > magnitude change and increase from 3 to 30. You have to restart the server > to make that change stick. It's impossible to predict how much that will > change your situation, to know if that's enough or you really need to > increase it further. > Based on what Tomasz suggested a day ago, I had changed settings to checkpoint_segments = 16 checkpoint_timeout = 20min checkpoint_completion_target = 0.8 and this seems to have improved performance significantly... data from almost 24 hours postgres=# select * from pg_stat_bgwriter; checkpoints_timed | checkpoints_req | buffers_checkpoint | buffers_clean | maxwritten_clean | buffers_backend | buffers_alloc -------------------+-----------------+--------------------+---------------+------------------+-----------------+--------------- 21 | 46 | 2218439 | 34158 | 145 | 60447 | 2707259 but i still do get statements that take over 2 or 3 seconds to execute sometimes... should I increase checkpoint_segments to 30 now? Should I change checkpoint_timeout & checkpoint_completion_target too?? i am fine with both WAL disk usage increasing and increase in time to recover from crash...