Nginx服務狀態監控

silent發表於2016-03-23

  在Nginx的外掛模組中有一個模組stub_status可以監控Nginx的一些狀態資訊,預設安裝可能沒有這個模組,手動編譯的時候加一下即可。

  1. 模組安裝

  先使用命令檢視是否已經安裝這個模組:

[root@ihxb123Z nginx]# ./nginx -V (V大寫會顯示版本號和模組等資訊、v小寫僅顯示版本資訊。

  如果已經安裝,會在顯示的資訊中包含 --with-http_stub_status_module資訊。如果沒有此模組,需要重新安裝,編譯命令如下:

./configure –with-http_stub_status_module

  2. Nginx配置

  安裝後只要修改nginx配置即可,配置如下:

location /hxbcdnstatus {
            stub_status            on;
            access_log             off;
           allow 127.0.0.1;
            deny all;
            #auth_basic              "NginxStatus";
            #auth_basic_user_file  conf/nginxstaus;
}

  此處預設只有本地訪問,如果遠端可以檢視需要加相關的IP或者乾脆去掉Deny all即可。加密檔案可以使用#htpasswd -c /usr/nginx/conf hxb 命令來建立。配置完成後需要重啟Nginx服務。

  狀態配置只能是針對某個Nginx服務。目前Nginx還無法做到針對單個站點進行監控。

  3. 狀態檢視

  配置完成後在瀏覽器中輸入http://127.0.0.1/hxbcdnstatus檢視,顯示資訊如下:

Active connections: 100 
server accepts handled requests
 1075 1064 6253 
Reading: 0 Writing: 5 Waiting: 95 

  4. 引數說明

  active connections – 活躍的連線數量

  server accepts handled requests — 總共處理了107520387個連線 , 成功建立107497834次握手, 總共處理了639121056個請求

  每個連線有三種狀態waiting、reading、writing

  reading —讀取客戶端的Header資訊數.這個操作只是讀取頭部資訊,讀取完後馬上進入writing狀態,因此時間很短。

  writing — 響應資料到客戶端的Header資訊數.這個操作不僅讀取頭部,還要等待服務響應,因此時間比較長。

  waiting — 開啟keep-alive後等候下一次請求指令的駐留連線.

  正常情況下waiting數量是比較多的,並不能說明效能差。反而如果reading+writing數量比較多說明服務併發有問題。

 

  補充:

  檢視Nginx併發程式數:ps -ef | grep nginx | wc -l

  檢視Web伺服器TCP連線狀態:netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

相關文章