mod_status is a great way to track down the source of high CPU usage and to find what vhost/script is the cause of it.
It gives you a live view of bandwith usage, CPU usage, and memory usage broken down by domain/vhost and script/URI.
vi /etc/httpd/conf/httpd.conf
ExtendedStatus On
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>
Add your IP after 127.0.0.1. I believe you could also require an htaccess pasword if you want.
After that reload Apache and browse to your webserver to http://yourhost.com/server-status and you'll see something like below:
Current Time: Saturday, 30-Apr-2011 15:55:46 PDT
W_..__....
Scoreboard Key:
"_
" Waiting for Connection, "S
" Starting up, "R
" Reading Request,
"W
" Sending Reply, "K
" Keepalive (read), "D
" DNS Lookup,
"C
" Closing connection, "L
" Logging, "G
" Gracefully finishing,
"I
" Idle cleanup of worker, ".
" Open slot with no current process
Srv | PID | Acc | M | CPU | SS | Req | Conn | Child | Slot | Client | VHost | Request |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0-3 | 22481 | 0/29/36628 | W | 0.42 | 0 | 0 | 0.0 | 0.04 | 307.98 | 9 | testdomain.com | GET /server-status?refresh=10 HTTP/1.1 |
1-3 | 18115 | 0/271/37239 | _ | 6.33 | 4 | 236 | 0.0 | 1.20 | 255.47 | forums.testdomain.com | POST /mgc_cb_evo_ajax.php HTTP/1.1 | |
2-3 | - | 0/0/35305 | . | 0.61 | 54 | 0 | 0.0 | 0.00 | 235.80 | forums.testdomain.com | GET /forumdisplay.php?s=e5pr | |
3-3 | - | 0/0/34526 | . | 9.19 | 69 | 0 | 0.0 | 0.00 | 235.66 | ::1 | 00-defaultsite.com | OPTIONS * HTTP/1.0 |
4-3 | 22258 | 0/49/28952 | _ | 1.12 | 4 | 0 | 0.0 | 0.21 | 194.55 | forums.testdomain.com | GET /cpstyles/kartel/kartel/misc/down9x9.gif HTTP/1.1 | |
5-3 | 19843 | 0/232/27942 | _ | 3.10 | 1 | 137 | 0.0 | 0.77 | 181.58 | unitetest.com | GET //index.php?action=profile;u=174 HTTP/1.1 | |
6-3 | - | 0/0/19301 | . | 2.31 | 569 | 0 | 0.0 | 0.00 | 130.28 | ::1 | 00-defaultsite.com | OPTIONS * HTTP/1.0 |
7-3 | - | 0/0/16325 | . | 0.26 | 2102 | 0 | 0.0 | 0.00 | 141.16 | ::1 | 00-defaultsite.com | OPTIONS * HTTP/1.0 |
8-3 | - | 0/0/5534 | . | 0.01 | 2103 | 0 | 0.0 | 0.00 | 36.51 | ::1 | 00-defaultsite.com | OPTIONS * HTTP/1.0 |
9-3 | - | 0/0/2243 | . | 0.09 | 2100 | 0 | 0.0 | 0.00 | 15.39 | ::1 | 00-defaultsite.com | OPTIONS * HTTP/1.0 |
Srv | Child Server number - generation |
---|---|
PID | OS process ID |
Acc | Number of accesses this connection / this child / this slot |
M | Mode of operation |
CPU | CPU usage, number of seconds |
SS | Seconds since beginning of most recent request |
Req | Milliseconds required to process most recent request |
Conn | Kilobytes transferred this connection |
Child | Megabytes transferred this child |
Slot | Total megabytes transferred this slot |
SSL/TLS Session Cache Status: |
cache type: SHMCB, shared memory: 512000 bytes, current sessions: 3 sub-caches: 32, indexes per sub-cache: 133 time left on oldest entries' SSL sessions: avg: 6 seconds, (range: 6...7) index usage: 0%, cache usage: 0% total sessions stored since starting: 571 total sessions expired since starting: 568 total (pre-expiry) sessions scrolled out of the cache: 0 total retrieves since starting: 15093 hit, 512 miss total removes since starting: 0 hit, 0 miss |
apache, cpu, usage, enable, mod_status, domainmod_status, vhost, bandwith, domain, uri, vi, etc, httpd, conf, extendedstatus, server, sethandler, ip, htaccess, pasword, reload, browse, webserver, http, yourhost, ll, localhost, centos, aug, apr, pdt, restart, pdtparent, uptime, secondstotal, accesses, gbcpu, cu, cs, requests, kb, currently, processed, idle, workers, w_, __, scoreboard, quot, _, reply, keepalive, dns, lookup, logging, gracefully, finishing, cleanup, slot, srv, pid, acc, ss, req, conn, testdomain, refresh, forums, mgc_cb_evo_ajax, php, forumdisplay, pr, defaultsite, cpstyles, kartel, misc, gif, unitetest, index, os, mode, milliseconds, kilobytes, megabytes, ssl, tls, cache, shmcb, bytes, sessions, caches, indexes, entries, avg, stored, expired, expiry, scrolled, retrieves, removes,