通过apache的mod_status 统计占资源的脚本

apache的mod_status模块,提供了对apache运行时的一些统计信息,对apache的管理员来说很有意义。

 

一.加载apache的mod_status模块

各种系统下,加载apache模块的方法不同,以ubuntu linux为例,如果使用在线安装的apache包,加载mod_status方法如下:

a2enmod status

 

二.配置apache

###apache2.conf###

<Location /visitname>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from all
</Location>

###############

 

三.查看apache状态信息报告页面

重启apache或重新载入apahce配置文件之后,即生效。此时可用 http://yourdomain/visitname访问,查看apache运行信息。

1.<Location /visitname>这里的visitname是可以自己取的名字,可随意修改成你自己想要的字符串,只要在访问URL中使用你取的名字就可以了。

2.http://yourdomain/visitname后面可加两个参数,可一起加

   a.页面信息自动更新 http://yourdomain/visitname?refresh=3 [每三秒自动更新一次页面信息]

   b.机器可读格式的信息页面 http://yourdomain/visitname?auto

3.打开更多有关apache的状态信息

   在apache2.conf中,多加一句配置信息

   ###apache2.conf###

   ExtendedStatus On

   ##############

  

四.数据分析

    先看apache mod_status的部分统计信息

####################################

Apache Server Status for www.test.com

Server Version: Apache/2.2.16  mod_ssl/2.2.16 OpenSSL/0.9.8o Server Built: Sep 8 2010 12:52:08


Current Time: Monday, 29-Nov-2010 12:31:14 CST Restart Time: Monday, 29-Nov-2010 11:33:33 CST Parent Server Generation: 3 Server uptime: 57 minutes 40 seconds Total accesses: 8596 - Total Traffic: 29.2 MB CPU Usage: u1.62 s9.43 cu0 cs0 - .319% CPU load 2.48 requests/sec - 8.7 kB/second - 3565 B/request 111 requests currently being processed, 0 idle workers

 

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

SrvPIDAccMCPUSSReqConnChildSlotClientVHostRequest
0-3 32178 0/2/16 W 0.05 2456 0 0.0 0.00 0.02 60.28.164.103 www.test.com GET /indexTarget.do?channel=1064&content=20444&id=1&number=1000
1-3 32682 0/19/75 W 0.02 1994 0 0.0 0.08 0.22 60.28.164.103 www.test.com GET /indexTarget.do?channel=1064&content=20040 HTTP/1.0

####################################

1.Scoreboard中的每个字符代表一个slot,字符总数代表apache所充许的最大子进程或线程(是进程还是线程这取决于你所使用的apache MPM是什么)数。

   我经常参考的数据有两种:

   a.如果这些字符中基乎没有"."了,这说明apache配置的MaxClients数量不够用了,要根据你的硬件资源(通常是RAM资源)情况决定是否调大这个数值。

   b.如果是"w"字符太多,这说明CPU很繁忙,就绪队列中的进程数很多,这时如果你进入系统,可能会发现系统的负载(load average)很高。这时可以看看统计信息页面,是哪些请求使进程处于"w"状态,很可能是这些进程计算时间太长或程序有死循环,可以对程序进行改进。

posted @ 2014-03-31 11:03  naledao  阅读(286)  评论(0编辑  收藏  举报