Apache性能监控
2012-11-11 21:25 虫师 阅读(24561) 评论(6) 编辑 收藏 举报上一章节简单介绍web服务器apache的架构与原理,关于apache的安装(linux 下面)在之前进行过介绍:
http://www.cnblogs.com/fnng/archive/2012/08/30/2662984.html
那么本节分享一些apache 的性能监控。
linux下通过server-status监控性能
要监控apache的性能,我们需要修改配置文件,允许查看apache运行状态的主机。
1)加载mod_status.so
对Apache的状态管理的模块是LoadModule status_module modules/mod_status.so ,所以需要...apache2\conf'\httpd.conf配置文件中修改。
[root@localhost /]# cd /usr/local/apache/conf
[root@localhost /]# vi httpd.conf
找到LoadModule status_module modules/mod_status.so ,去掉其前面的# 号(默认是没有# 号的)
2)下面有修改配置文件有两种方式:
方式一: 在httpd.conf文件底部分添加以下内容:
<location /c-server-status> SetHandler server-status Order Deny,Allow Deny from nothing Allow from all </location> ExtendedStatus On
方法二:在httpd.conf中找到以下内存
# Real-time info on requests and configuration
#Include conf/extra/httpd-info.conf //去掉这一行前面的#号
打开...apache2\conf\extra\http-info.conf 配置文件进行修改。修改内容与方式一相同。
其实,两种无方法是相同的,只是第二种方法更为优雅一点。
修改信息解释:
<location /c-server-status> : c-server-status 这个名字可以任意的取,但最好不要被别人猜到。
Deny from 表示禁止的访问地址;nothing 表示没有禁止访问的地址 。
Allow from 表示允许的地址访问;all 表示所有的地址都可以访问。
ExtendedStatus On 表示的是待会访问的时候能看到详细的请求信息,另外该设置仅能用于全局设置,不能在特定的虚拟主机中打开或关闭。启用扩展状态信息将会导致服务器运行效率降低。
3)重启apache
[root@localhost /]# cd /usr/local/apache/bin/
[root@localhost bin]# apachectl start 启动
[root@localhost bin]# apachectl stop 停止
4)访问
http://你的IP地址:端口/c-server-status
http://你的IP地址:端口/c-server-status ?refresh=N
N将表示访问状态页面可以每N秒自动刷新一次
linux下通过命令监控
除了上面的方式监控性能,我们也可以通过命令来查看进程数与当前连接数。
1、用 ps 来看 httpd 进程数
# ps -ef | grep httpd | wc -l
用这个命令统计当前的httpd进程数,当然这结果包含 grep httpd 的进程输出,一般来说实际进程数比输出结果少1。Apache启动的时候,默认就起来几个进程,如果连接数多了,它就会生出更多的进程来处理请求。
2、用 netstat 来看当前的连接数
# netstat -ant | grep ":80 " | wc -l
连接数目并不等于httpd线程数目,当然连接数目越多,httpd进程数就有可能数会增多。上面的返回结果数目,有可能包括多种连接状态,比如 LISTEN、ESTABLISHED、TIME_WAIT等等,可以加入状态关键字进一步过滤,得到想要的结果。
Win7 64 下通过server-status监控
Win7 64位下的apache并不多,Apache和PHP均未出现官方的64位版本 。下面是CSDN上的网友贡献的,本人验证可用。
http://download.csdn.net/detail/yetilion/4468168
下载后对其进行解压,我解压到了D盘当前目录下。开始---运行---cmd
进入d:\httpd-2.2-x64\bin目录(当前以管理员身份)
d:\httpd-2.2-x64\bin> httpd -k install 安装
如果提示有误的话,请检查当前用户是否是管理员员,或修改http.conf文件里设置的端口是否被占用。
现在用记事本打开conf/目录下的httpd.conf
---------------------------------------------------------------------------------------------------------------------------------------------------------
搜索ServerRoot,把后面的目录改为当前目录,即"/httpd-2.2-x64"
搜索DocumentRoot,把后面的目录改为自己的网页的目录
搜索DirectoryIndex,在后面添加默认主页名字index.html index.htm index.php
搜索ServerName,去掉#号,把后面的网址改成自己的,如: 127.0.0.1:80
在httpd.conf末尾添加如下代码:yourpath你的网站目录
<Directory "d:/yourpath/">
Allow from all
</Directory>
注意:如果电脑安装了IIS的话,要和Apache监听的端口要不同,不然Apache启动不了
----------------------------------------------------------------------------------------------------------------------
使用Apache,在CMD下,进入\httpd-2.2-x64\bin目录,输入以下命令:
d:\httpd-2.2-x64\bin> httpd -k start 启动Apache:
d:\httpd-2.2-x64\bin> httpd -k restart 重启Apache
d:\httpd-2.2-x64\bin> httpd -k shutdown 关闭Apache
http://你的IP地址:端口/c-server-status
Apache Server Status for localhost
Server Version: Apache/2.2.19 (Win64)
Server Built: May 28 2011 15:18:56
Current Time: Sunday, 11-Nov-2012 17:44:21 Öйú±ê׼ʱ¼ä
Restart Time: Sunday, 11-Nov-2012 17:36:28 Öйú±ê׼ʱ¼ä
Parent Server Generation: 1
Server uptime: 7 minutes 52 seconds
Total accesses: 0 - Total Traffic: 0 kB
0 requests/sec - 0 B/second -
1 requests currently being processed, 63 idle workers
______________________________________________________________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 SS Req Conn Child Slot Client VHost Request
0-1 4140 0/0/0 W 0 287636364 0.0 0.00 0.00 127.0.0.1 192.168.0.100 GET /c-server-status HTTP/1.1
Srv Child Server number - generation
PID OS process ID
Acc Number of accesses this connection / this child / this slot
M Mode of operation
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
参数分析:
参数分析:
字段 说明
Server Version Apache 服务器的版本。
Server Built Apache 服务器编译安装的时间。
Current Time 目前的系统时间。
Restart Time Apache 重新启动的时间。
Parent Server Generation Apache 父程序 (parent process) 的世代编号,就是 httpd 接收到 SIGHUP 而重新启动的次数。
Server uptime Apache 启动后到现在经过的时间。
Total accesses 到目前为此 Apache 接收的联机数量及传输的数据量。
CPU Usage 目前 CPU 的使用情形。
_SWSS.... 所有 Apache process 目前的状态。每一个字符表示一个程序,最多可以显示 256 个程序的状态。
Scoreboard Key 上述状态的说明。以下为每一个字符符号所表示的意义:
* _:等待连结中。
* S:启动中。
* R:正在读取要求。
* W:正在送出回应。
* K:处于保持联机的状态。
* D:正在查找DNS。
* C:正在关闭连结。
* L:正在写入记录文件。
* G:进入正常结束程序中。
* I:处理闲置。
* .:尚无此程序。
Srv 本程序与其父程序的世代编号。
PID 本程序的process id。
Acc 分别表示本次联机、本程序所处理的存取次数。
M 该程序目前的状态。
CPU 该程序所耗用的CPU资源。
SS 距离上次处理要求的时间。
Req 最后一次处理要求所耗费的时间,以千分之一秒为单位。
Conn 本次联机所传送的数据量。
Child 由该子程序所传送的数据量。
Slot 由该 Slot 所传送的数据量。
Client 客户端的地址。
VHost 属于哪一个虚拟主机或本主机的IP。
Request 联机所提出的要求信息。
----------------------------------------------
ps: linux使用server-status监控的方式一直没有成功,但在网上查阅了两天,就本文中所介绍的方式,不知道和我设置的环境有关吧,如果网友成功了环境留言告诉我。
还有最近整理博客的频率减少了,一方面是由于工作忙,一方面是抽时间学学英语,技术员英语不好是硬伤呢,也许初做技术感觉影响不大,做几年就会有比较深的感受。