System is FreeBSD shopzeus.com 8.1-STABLE FreeBSD 8.1-STABLE #0: Sun Oct 31 02:55:28 EDT 2010 amd64 It has two quad-core Xeon CPUs, 24GB memory, and a RAID 1+0 array with 10 disks + Areca 1680 controller with 2GB write back cache.

Server is running: mailscanner + apache multihost + PHP + postgresql. Main load on the server is usually postgresql.

Today something happened. Number of http processes went up to 200. As a result, number of connections to database also went up to 200, and the web server is now refusing clients with "Cannot connect to database" messages (coming from PHP).

This is a typical output from top:

last pid: 12789; load averages: 7.77, 10.77, 13.46 up 26+03:00:30 06:22:04
6637 processes: 7 running, 623 sleeping, 7 zombie
CPU: 32.9% user,  0.0% nice,  7.6% system,  0.6% interrupt, 58.9% idle
Mem: 3885M Active, 15G Inact, 3236M Wired, 627M Cache, 2465M Buf, 656M Free
Swap: 12G Total, 12M Used, 12G Free

PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 66834 pgsql 1 118 0 443M 417M CPU2 2 16:17 99.46% postgres 11473 pgsql 1 72 0 441M 242M sbwait 5 0:02 4.59% postgres 11026 pgsql 1 47 0 439M 249M sbwait 7 0:01 3.17% postgres 6642 www 1 48 0 236M 42928K select 0 0:01 2.29% httpd 10147 www 1 48 0 236M 44048K select 6 0:01 2.10% httpd 3961 shopzeus 29 44 0 208M 96364K uwait 4 18.4H 1.37% python


Here is what I don't understand. "last pid" is increasing relatively slowly, e.g. there are no hidden processes. Only the first one or two processes are showing CPU load > 10%. The "CPU User%" value is about 50%. We have lots of free memory. I/O load is almost nothing (see iostat below).

However, server load is between 7 and 13! In fact sometimes it is above 16. And everybody complains that the server is too slow.

How can I find out what is causing the problem?

Example gstat output:

dT: 1.006s  w: 1.000s
 L(q)  ops/s    r/s   kBps   ms/r    w/s   kBps   ms/w   %busy Name
    0      0      0      0    0.0      0      0    0.0    0.0| ad4
    0      0      0      0    0.0      0      0    0.0    0.0| ad4s1
    0      0      0      0    0.0      0      0    0.0    0.0| ad4s1d
    0      0      0      0    0.0      0      0    0.0    0.0| da0
    0      0      0      0    0.0      0      0    0.0    0.0| da0s1
    1    304      3     34   14.0    301   7522    0.2    5.1| da1
    0      2      2     32   11.9      0      0    0.0    2.4| da2
    0      0      0      0    0.0      0      0    0.0    0.0| da3
    0      0      0      0    0.0      0      0    0.0    0.0| da4
    0      0      0      0    0.0      0      0    0.0    0.0| da0s1a
    0      0      0      0    0.0      0      0    0.0    0.0| da0s1b
    0      0      0      0    0.0      0      0    0.0    0.0| da0s1d
    0      0      0      0    0.0      0      0    0.0    0.0| da0s1e
    1    304      3     34   14.0    301   7522    0.3    5.3| da1s1
    0      2      2     32   11.9      0      0    0.0    2.4| da2s1
    0      0      0      0    0.0      0      0    0.0    0.0| da3s1
    0      0      0      0    0.0      0      0    0.0    0.0| da4s1
    1    304      3     34   14.0    301   7522    0.4    5.4| da1s1d
    0      2      2     32   11.9      0      0    0.0    2.4| da2s1d
    0      0      0      0    0.0      0      0    0.0    0.0| da3s1d

Example iostat output:

tty ad4 da0 da1 cpu tin tout KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s us ni sy in id 0 349 30.81 16 0.49 16.51 11 0.18 22.56 124 2.72 29 0 9 1 61 0 9282 0.00 0 0.00 0.00 0 0.00 16.00 7 0.11 41 0 11 1 47 0 12520 0.00 0 0.00 0.00 0 0.00 18.00 8 0.14 45 0 14 0 41 0 12205 0.00 0 0.00 0.00 0 0.00 0.00 0 0.00 38 0 15 0 47

Example systat output:

                    /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
     Load Average >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

                    /0%  /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
pgsql      postgres XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXXXXXXXXXXXXXXXXXXXX
www           httpd XXXXXXXXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXX
www           httpd XXXXXX
pgsql      postgres XXX
pgsql      postgres X
www           httpd X
root           intr X
www           httpd X
www           httpd X
www           httpd X
www           httpd X
shopzeus     python X
www           httpd X
www           httpd X
www           httpd X
www           httpd X
www           httpd X
www           httpd X
www           httpd X
www           httpd X
zeusd1       python X
www           httpd X
www           httpd X
www           httpd X
www           httpd X
www           httpd X
www           httpd X
www           httpd X


Looks like the server is almost idle. So how can I have load = 12 and similar values?

Thanks,

   Laszlo

_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to