nginx是一款很優秀的web伺服器軟體,很多地方都有接觸和使用到他,大部分的場景壓力還沒達到需要調優的地步,而調優的難點其實不在於調,而在於各項狀態的監控,能夠很快的找到資源在什麼時候出現問題,調整前後出現的變化,如果都不知道變化在**所做的調優只能是憑感覺的
之前看到有技術人員用nginx作為rgw的前端的時候,通過優化去實現將nginx的併發提高到很大,而不出現4xx等問題,nginx的access.log裡面是有記錄訪問的狀態碼的,而這個日誌的分析如果是一次次的去看,這樣的分析是無法用精確的資料去展示的
最開始的想法是想根據時間點去統計時間點的狀態碼,後來發現這樣做既複雜,又無法輸出到一些資料展示軟體當中,實際上我只需要統計一定時間的總的狀態值,然後定期去取這個值,然後在資料展示的時候,就可以看到乙個數值的曲線圖,增量即為這個時間區間所產生的狀態值
下面就是我的實現,乙個指令碼就可以統計了,這個是最初的版本,純統計狀態碼,還沒有區分讀寫分離的情況,這個在後面會加入分離的情況
#!/bin/sh
#### begin init info
# provides: nginxstatus
# required-start: $nginx
# short-description: nginxstatus
# description: collectstatus of nginx
### end init info##
# pidfile: /var/run/nginx/nginxstatus.pid
## source function library.
##########################################
#狀態碼一般分為1xx,2xx,3xx,4xx,5xx,total
statucode="2 3 4 5"
##check intervel setting
interval=2
########################################
#check the nginxstatus pid dir if exist
if [ ! -d /var/run/nginxstatus/ ];then
mkdir /var/run/nginxstatus/
fi##check the status of nginx access
check()' |wc -l` > /var/log/nginx/"$code"xx.log
done
sleep $interval
}#start nginx status
start() '`
echo -e pid is "\033[33m $! \033[0m"
echo $! >> /var/run/nginxstatus/nginxstatus.pid
}#stop nginx
stop()
status()
clean ()
case "$1" in
start)
start && exit 0
;;stop)
stop || exit 0
;;status)
status
;;clean)
clean
;;*)
echo $"usage: $0 "
exit 2
esac
exit $?
使用方法:
[root@zhongbo ~]# /etc/init.d/nginxstatus start
starting nginxstatus: [ ok ]
pid is 166534
會生成下面的狀態檔案,週期為2s一更新
[root@zhongbo ~]# ll /var/log/nginx/*xx.log
-rw-r--r-- 1 root root 7 feb 23 00:25 /var/log/nginx/2xx.log
-rw-r--r-- 1 root root 6 feb 23 00:25 /var/log/nginx/3xx.log
-rw-r--r-- 1 root root 7 feb 23 00:25 /var/log/nginx/4xx.log
-rw-r--r-- 1 root root 6 feb 23 00:25 /var/log/nginx/5xx.log
[root@zhongbo ~]# /etc/init.d/nginxstatus status
2xx:21
3xx:1
4xx:10
5xx:0
[root@zhongbo ~]# /etc/init.d/nginxstatus stop
stop nginxstatus collect [ ok ]
[root@zhongbo ~]# /etc/init.d/nginxstatus clean
clean /var/log/nginx/access.log [ ok ]
這個操作會清空/var/log/nginx/access.log日誌的內容重新統計
這個會在後期根據需求進行優化
nginx狀態監控
通過檢視nginx的併發連線,我們可以更清除的知道 的負載情況。nginx併發檢視有兩種方法 之所以這麼說,是因為筆者只知道兩種 一種是通過web介面,一種是通過命令,web檢視要比命令檢視顯示的結果精確一些。下面介紹這兩種檢視方法 no1 通過瀏覽器檢視 通過web介面檢視時nginx需要開啟st...
nginx狀態監控
通過檢視nginx的併發連線,我們可以更清除的知道 的負載情況。nginx併發檢視有兩種方法 之所以這麼說,是因為筆者只知道兩種 一種是通過web介面,一種是通過命令,web檢視要比命令檢視顯示的結果精確一些。下面介紹這兩種檢視方法 no1 通過瀏覽器檢視 通過web介面檢視時nginx需要開啟st...
nginx狀態監控
通過檢視nginx的併發連線,我們可以更清除的知道 的負載情況。nginx併發檢視有兩種方法 之所以這麼說,是因為筆者只知道兩種 一種是通過web介面,一種是通過命令,web檢視要比命令檢視顯示的結果精確一些。下面介紹這兩種檢視方法 no1 通過瀏覽器檢視 通過web介面檢視時nginx需要開啟st...