Re: Slow Postgresql server - Mailing list pgsql-performance

From Jeff Frost
Subject Re: Slow Postgresql server
Date
Msg-id Pine.LNX.4.64.0704112209550.4030@discord.home.frostconsultingllc.com
Whole thread Raw
In response to Slow Postgresql server  (Jason Lustig <lustig@brandeis.edu>)
List pgsql-performance
On Wed, 11 Apr 2007, Jason Lustig wrote:

> Hello all,
>
> My website has been having issues with our new Linux/PostgreSQL server being
> somewhat slow. I have done tests using Apache Benchmark and for pages that do
> not connect to Postgres, the speeds are much faster (334 requests/second v.
> 1-2 requests/second), so it seems that Postgres is what's causing the problem
> and not Apache. I did some reserach, and it seems that the bottleneck is in
> fact the hard drives! Here's an excerpt from vmstat:
>
> procs -----------memory---------- ---swap-- -----io---- --system--
> -----cpu------
> r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
> st
> 1  1    140  24780 166636 575144    0    0     0  3900 1462  3299  1  4 49 48
> 0
> 0  1    140  24780 166636 575144    0    0     0  3828 1455  3391  0  4 48 48
> 0
> 1  1    140  24780 166636 575144    0    0     0  2440  960  2033  0  3 48 48
> 0
> 0  1    140  24780 166636 575144    0    0     0  2552 1001  2131  0  2 50 49
> 0
> 0  1    140  24780 166636 575144    0    0     0  3188 1233  2755  0  3 49 48
> 0
> 0  1    140  24780 166636 575144    0    0     0  2048  868  1812  0  2 49 49
> 0
> 0  1    140  24780 166636 575144    0    0     0  2720 1094  2386  0  3 49 49
> 0
>
> As you can see, almost 50% of the CPU is waiting on I/O. This doesn't seem
> like it should be happening, however, since we are using a RAID 1 setup
> (160+160). We have 1GB ram, and have upped shared_buffers to 13000 and
> work_mem to 8096. What would cause the computer to only use such a small
> percentage of the CPU, with more than half of it waiting on I/O requests?

Well, the simple answer is a slow disk subsystem.  Is it hardware or software
RAID1?  If hardware, what's the RAID controller?  Based on your vmstat output,
I'd guess that this query activity is all writes since I see only blocks out.
Can you identify what the slow queries are?  What version of postgres?  How
large is the database?  Can you post the non-default values in your
postgresql.conf?

I'd suggest you test your disk subsystem to see if it's as performant as you
think with bonnie++.  Here's some output from my RAID1 test server:

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
pgtest           4G 47090  92 52348  11 30954   6 41838  65 73396   8 255.9  1
                     ------Sequential Create------ --------Random Create--------
                     -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
               files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                  16   894   2 +++++ +++   854   1   817   2 +++++ +++   969 2

So, that's 52MB/sec block writes and 73MB/sec block reads.  That's typical of
a RAID1 on 2 semi-fast SATA drives.

If you're doing writes to the DB on every web page, you might consider playing
with the commit_delay and commit_siblings parameters in the postgresql.conf.
Also, if you're doing multiple inserts as separate transactions, you should
consider batching them up in one transaction.

--
Jeff Frost, Owner     <jeff@frostconsultingllc.com>
Frost Consulting, LLC     http://www.frostconsultingllc.com/
Phone: 650-780-7908    FAX: 650-649-1954

pgsql-performance by date:

Previous
From: Dennis Bjorklund
Date:
Subject: Re: Slow Postgresql server
Next
From: Ron
Date:
Subject: Re: Slow Postgresql server