Re: Tuning Help - What did I do wrong? - Mailing list pgsql-performance

From Scott Marlowe
Subject Re: Tuning Help - What did I do wrong?
Date
Msg-id dcc563d10710041042s13b311bep352c15c66b99a3ba@mail.gmail.com
Whole thread Raw
In response to Re: Tuning Help - What did I do wrong?  (Josh Trutwin <josh@trutwins.homeip.net>)
List pgsql-performance
On 10/4/07, Josh Trutwin <josh@trutwins.homeip.net> wrote:
> On Thu, 4 Oct 2007 11:19:22 -0500
> "Scott Marlowe" <scott.marlowe@gmail.com> wrote:
>
> > We need to see examples of what's slow, including explain analyze
> > output for slow queries.  Also a brief explanation of the type of
> > load your database server is seeing.  I.e. is it a lot of little
> > transactions, mostly read, batch processing, lots of users, one
> > user, etc...   Right now we don't have enough info to really help
> > you.
>
> Sorry, this server is for a few (100+?) websites so it's running
> along site apache, php.  All connections to postgresql (except for
> the occaional psql console login) are done from php requests, using
> the same user (basically there are two users, the one php uses and
> postgres).  The bulk of the activity would be reads, but
> certainly inesrts/updates/deletes would be interspersed in there.
> Most of the activity is done via auto-commits, not many long
> transactions.

So, are there certain queries that are much slower than the others?
Run them from psql with explain analyze in front of them and post the
query and the output here.

> From your followup email:
>
> > ... you should use tools like vmstat, iostat and top to get an idea
> > of what your server is doing.
>
> # vmstat
>    procs                      memory    swap          io
> system         cpu
>  r  b  w   swpd   free   buff  cache  si  so    bi    bo   in    cs
> us  sy  id
>  3  1  0    268  68332  39016 2201436   0   0     3     3    4
> 2   3   4   2

vmstat needs to be run for a while to give you useful numbers.   try:

vmstat 5

and let it run for a few minutes.  The first line won't count so much,
but after that you'll get more reasonable numbers.

> iostat is not found - will see if I can download it.  top typically
> shows postmaster as the top process with 10-15% of the CPU, followed
> by apache threads.

What OS are you on?

>  12:01pm  up 104 days, 12:05,  2 users,  load average: 9.75, 9.30,
> 7.70

That's pretty heavy load.  I notice there's no wait % listed for CPU,
so I assume it's not a late model Linux kernel or anything.

> 215 processes: 214 sleeping, 1 running, 0 zombie, 0 stopped
> CPU states:  0.1% user,  0.0% system,  0.0% nice,  0.4% idle
> Mem:  3617400K av, 3552784K used,  64616K free,      0K shrd,  37456K
> buff
> Swap: 2457928K av,    264K used, 2457664K free
> 2273664K cached
>
>   PID USER     PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM   TIME
> COMMAND
> 31797 postgres  17   0 28836  28M  1784 S       0  8.5  0.7  10:15
> postmaster

Are the postmasters using most of the CPU?  OR the other processes?

> > What kind of drive subsystem do you have?  What kind of raid
> > controller?  etc...
>
> Gathering more information on this - Raid is a software
> RAID-1.  Some information:

OK, given that it's read mostly, it's likely not a problem that a
faster RAID controller would help.  Possibly more drives in a RAID 10
would help a little, but let's look at optimizing your query and
postmaster first.

Do you have the postmaster configured to log long running queries?
That's a good starting point.  also google pg_fouine (I think I spelt
it right) for analyzing your logs.

It's quite likely the issue here is one long running query that
chewing all your I/O or CPU and making everything else slow.  Once we
find that query things should get better and we can worry about
performance tuning in a more leisurely manner.

pgsql-performance by date:

Previous
From: Josh Trutwin
Date:
Subject: Re: Tuning Help - What did I do wrong?
Next
From: "Tore Lukashaugen"
Date:
Subject: Partitioning in postgres - basic question