前面的推文我們認識了apache目錄結構與配置知識,今天我們繼續來看下apache監控技術,究竟是怎麼做性能監控的。後續文章都會系統分享幹貨,帶大家從0到1學會性能測試,另外還有教程等同步資料,文末加小編VX(flyhappy111)領取即可。
Apache監控技術
關于apache監控通常會有兩種方法:
一是:使用apache自帶的status監控子產品進行監控;
二是:使用apachetop工具進行監控;
本章節詳細的介紹第一種監控方法。
01status子產品監控
status子產品是為伺服器管理來擷取伺服器性能的相關資訊,這些資訊将以一個HTML頁面的方式來顯示,該頁面以比較簡單的閱讀方式來顯示目前伺服器的統計資訊,并且還可以自動重新整理的方式來實時顯示這些統計資訊。
使用status子產品監控apache伺服器的步驟如下:
1.開啟status子產品
Apache伺服器中的httpd配置檔案中有很多可被調用的子產品,主要包括以下子產品:
# LoadModule foo_module modules/mod_foo.so
LoadModule access_module modules/mod_access.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_module modules/mod_auth.so
#LoadModule auth_anon_module modules/mod_auth_anon.so
#LoadModule auth_dbm_module modules/mod_auth_dbm.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule headers_module modules/mod_headers.so
LoadModule imap_module modules/mod_imap.so
LoadModule include_module modules/mod_include.so
#LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
LoadModule status_module modules/mod_status.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule ssl_module modules/mod_ssl.so
前面有“#”号的代碼,表示該代碼被注釋不生效,如果需要該行代碼生效,那麼需要将前面的“#”号取消。監控Apache的狀态需要啟動LoadModule status_module modules/mod_status.so子產品。
2.設定擴充日志資訊
設定擴充日志資訊的指令如下:
文法:
ExtendedStatus On|Off
預設值:
ExtendedStatus Off
這個功能僅在apache 1.3.2或更高版本才可以使用。
在httpd.conf配置檔案中添加這行代碼即可。
預設情況下,隻能看到以下一些基本資訊,如圖10-1所示
如果需要顯示所有的狀态資訊,需要将ExtendedStatus的值設定為On,該選項的預設值為Off,是以正常情況下隻能看到如圖10-1所示的基本資訊,在監控過程中需要将該選項的值設定為On,以便顯示Apache伺服器所有的狀态資訊。
3.設定SeeRequestTail
該指令是使用設定顯示請求的前63個字元還是顯示最後63個字元。
文法:
SeeRequestTail On|Off
預設值:
SeeRequestTail Off
這個功能僅在apache 2.2.7或更高版本才可以使用。
在httpd.conf配置檔案中添加這行代碼即可。
4.設定通路status權限
伺服器的狀态資訊是通常“server-status”中的“handler”調用,server-status的代碼如下:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from all
</Location>
Deny from:表示禁止的通路位址;
Allow from:表示允許的位址通路;
注意:在監控之前一定要啟動“server-status”子產品,否則SetHandler無法讀到伺服器的狀态資訊,進而導緻監控失敗。
5.啟用監控
現在可以通過使用Web浏覽器通路頁面來通路伺服器統計資訊,http://your.server.name/server-status。
測試是否可以正确的顯示Apache伺服器的狀态資訊,如果正确,則會顯示如圖10-2所示的詳細資訊。
6.狀态資訊自動更新
關于顯示詳細狀态還有兩個參數:
?refresh=N:設定每N秒後動态重新整理一次詳細資訊(?refresh=5表示每5秒鐘重新整理一次),如果不設定具體的時間間隔(如?refresh),那麼預設值為每1秒鐘動态重新整理一次詳細資訊。
?auto:表示伺服器處于通路狀态下的動态态資訊;
其文法格式為http://your.server.name/server-status?refresh=N
如http://localhost/server-status?auto&refresh=5表示每5秒動态重新整理一次詳細資訊,結果如圖10-3所示
Total Accesses:到目前為此Apache接收的聯機數量及傳輸的資料量;
To kBytes:接收的總的位元組數;
Uptime:伺服器運作的總時間(機關秒);
ReqPerSec:平均每秒請求數;
BytesPerSec:平均每秒發送的位元組數;
BytesPerReq:平均每個請求發送的位元組數;
BusyWorkers:正在工作數;
IdleWorkers:空閑工作數;
BusyWorkers加IdleWorkers的和為服務所允許的同時工作的線程數,配置檔案中同時允許的最多線程中的設定項為ThreadsPerChild,其缺少值為250。即ThreadsPerChild=BusyWorkers+IdleWorkers。
隻輸入http://IP/server-status,則隻顯示相關的統計資訊,而非動态資訊,資訊内容如下:
表示目前所有線程在處理請求時所處于的狀态。線程處理主要的狀态包括以下幾種:
"_":表示等待連接配接
"S":表示連接配接開始,可以發送請求
"R":表示讀請求的狀态
"W":表示伺服器正響應回複資料的狀态
"K":表示保持長連接配接狀态
"D":表示域名解析狀态
"C":表示連接配接正在關閉
"L":表示正在退出
"G":表示退出完成
"I":表示空閑的線程
".":表示目前線程沒的打開slot
統計部分内容資訊含義依次為:到目前為止Apache接收的聯機數量及傳輸的資料量、已發送的總的位元組數、平均每秒請求數、平均每秒發送的位元組數、平均每個請求發送的位元組數、目前正在請求的線程數、空閑的結程數。
關于M列的狀态主要包括以下幾種:
_:等待連結中。
S:啟動中。
R:正在讀取要求。
W:正在送出回應。
K:處于保持聯機的狀态。
D:正在查找DNS。
C:正在關閉連結。
L:正在寫入記錄檔案。
G:進入正常結束程式中。
I:處理閑置。
.:尚無此程式。
關于請求表格中各列的含義見表10-1
各選項的含義:
Srv:表示子程序
PID:子程序的程序号
Acc:表示連接配接數量、子程序、slot
M:表示目前請求所處的狀态
CPU:表示CPU使用情況
SS:表示目前一共有多少請求
Req:表示一共發的請求數
Conn:表示目前連接配接傳輸的位元組數
Child:表示每個程序傳輸的位元組數
Slot:表示目前slot一共傳輸了多少位元組數