天天看點

漲薪技術|0到1學會性能測試第43課-apache status子產品監控

前面的推文我們認識了apache目錄結構與配置知識,今天我們繼續來看下apache監控技術,究竟是怎麼做性能監控的。後續文章都會系統分享幹貨,帶大家從0到1學會性能測試,另外還有教程等同步資料,文末加小編VX(flyhappy111)領取即可。

漲薪技術|0到1學會性能測試第43課-apache status子產品監控

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所示

漲薪技術|0到1學會性能測試第43課-apache status子產品監控

如果需要顯示所有的狀态資訊,需要将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所示的詳細資訊。

漲薪技術|0到1學會性能測試第43課-apache status子產品監控

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所示

漲薪技術|0到1學會性能測試第43課-apache status子產品監控

Total Accesses:到目前為此Apache接收的聯機數量及傳輸的資料量;

To kBytes:接收的總的位元組數;

Uptime:伺服器運作的總時間(機關秒);

ReqPerSec:平均每秒請求數;

BytesPerSec:平均每秒發送的位元組數;

BytesPerReq:平均每個請求發送的位元組數;

BusyWorkers:正在工作數;

IdleWorkers:空閑工作數;

BusyWorkers加IdleWorkers的和為服務所允許的同時工作的線程數,配置檔案中同時允許的最多線程中的設定項為ThreadsPerChild,其缺少值為250。即ThreadsPerChild=BusyWorkers+IdleWorkers。

隻輸入http://IP/server-status,則隻顯示相關的統計資訊,而非動态資訊,資訊内容如下:

漲薪技術|0到1學會性能測試第43課-apache status子產品監控

表示目前所有線程在處理請求時所處于的狀态。線程處理主要的狀态包括以下幾種:

"_":表示等待連接配接

"S":表示連接配接開始,可以發送請求

"R":表示讀請求的狀态

"W":表示伺服器正響應回複資料的狀态

"K":表示保持長連接配接狀态

"D":表示域名解析狀态

"C":表示連接配接正在關閉

"L":表示正在退出

"G":表示退出完成

"I":表示空閑的線程

".":表示目前線程沒的打開slot

漲薪技術|0到1學會性能測試第43課-apache status子產品監控

統計部分内容資訊含義依次為:到目前為止Apache接收的聯機數量及傳輸的資料量、已發送的總的位元組數、平均每秒請求數、平均每秒發送的位元組數、平均每個請求發送的位元組數、目前正在請求的線程數、空閑的結程數。

關于M列的狀态主要包括以下幾種:

_:等待連結中。

S:啟動中。

R:正在讀取要求。

W:正在送出回應。

K:處于保持聯機的狀态。

D:正在查找DNS。

C:正在關閉連結。

L:正在寫入記錄檔案。

G:進入正常結束程式中。

I:處理閑置。

.:尚無此程式。

關于請求表格中各列的含義見表10-1

漲薪技術|0到1學會性能測試第43課-apache status子產品監控
漲薪技術|0到1學會性能測試第43課-apache status子產品監控

各選項的含義:

Srv:表示子程序

PID:子程序的程序号

Acc:表示連接配接數量、子程序、slot

M:表示目前請求所處的狀态

CPU:表示CPU使用情況

SS:表示目前一共有多少請求

Req:表示一共發的請求數

Conn:表示目前連接配接傳輸的位元組數

Child:表示每個程序傳輸的位元組數

Slot:表示目前slot一共傳輸了多少位元組數

繼續閱讀