上一章節簡單介紹web服務器apache的架構與原理,關於apache的安裝(linux 下面)在之前進行過介紹:
http://www.cnblogs.com/fnng/archive/2012/08/30/2662984.html
那么本節分享一些apache 的配置文件及其性能監控。
一.apache配置文件
常用的配置文件有:
1.XXX/httpd2.X/conf/httpd.conf。該文件是apache的主要配置文件。其中主要說明:監聽的端口,監聽的地址,默認開啟的進程方式(prefork.c和work.c)
2.XXX/httpd2.X/conf/extra/httpd-default.conf。 該文件是apache在主要配置基礎上更詳細的規定了超時時間,連接保持等等
3.XXX/httpd2.X/conf/extra/httpd-mpm.conf。 該文件是apache在主要配置基礎上,如果開啟MPM模式的話。那么進程的開啟是否就需要使用這里面方式。
注:extra目錄中的文件,基本都是需要在httpd.conf中開啟,才能生效,如:httpd.conf文件中 #Include conf/extra/httpd-mpm.conf 。將前面的#去掉,就是開啟該功能。
二.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等等,可以加入狀態關鍵字進一步過濾,得到想要的結果。
3.查看apache的工作模式
第一步:# cd /usr/sbin
第二步:# ./httpd -V 該命令將會詳解當前apache使用的模式是什么 (./apachectl -l 具有同樣的功能)
4.修改apache的工作模式(以下僅是其中一種方式,具體是否正確有待驗證。但是可以肯定的是:通過在開啟apache時配置相應的參數,是必然正確的)
# cat /etc/sysconfig/httpd
默認情況下是perfork模式,如果 #HTTPD=/usr/sbin/httpd.worker 的#被去掉了。那么apache 的工作模式就變成了perfork
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監控的方式一直沒有成功,但在網上查閱了兩天,就本文中所介紹的方式,不知道和我設置的環境有關吧,如果網友成功了環境留言告訴我。
還有最近整理博客的頻率減少了,一方面是由於工作忙,一方面是抽時間學學英語,技術員英語不好是硬傷呢,也許初做技術感覺影響不大,做幾年就會有比較深的感受。