nginx的qps计算脚本
qps计算脚本
包括计算全天pv、qps
给定时间段内pv、qps
峰值时间qps
一般时间qps
#!/bin/bash
#********************************************************************
# File Name: ngx_qps.sh
# Version: V1.0
# Author: dahuangji
# Email:
# Created Time : 2022-02-13 09:07:41
# Description:
#********************************************************************
RED='\E[31;2m'
GREEN='\E[32;1m'
END='\E[0m'
days_pv=`wc -l /opt/nginx/logs/access.log|cut -d ' ' -f1`
ngx_qps() {
TIME=$1
if [[ "$TIME" = "" ]];then
echo -e "$RED 必须给定统计pv的时间 $END"
return 1
fi
old_request=$(curl -u hj:123456 http://2.2.2.12:81/ngx_status 2>/dev/null\
|awk 'NR==3 {print}'\
|awk '{print $3}')
sleep $TIME
new_request=$(curl -u hj:123456 http://2.2.2.12:81/ngx_status 2>/dev/null\
|awk 'NR==3 {print}'\
|awk '{print $3}')
requests=$((new_request-old_request))
qps=$(echo "scale=2;$requests/$TIME"|bc)
echo -e "$GREEN $TIME秒的请求数(pv): $requests $END"
echo -e "$GREEN $TIME秒的qps为:$qps $END"
workers=`awk -F' +|;' '/processes/{print $2}' /opt/nginx/conf/nginx.conf`
if [ $workers == "auto" ] ;then
workers=`awk '/cores/{print $4}' /proc/cpuinfo`
worker_qps=$(echo "scale=2; $qps/$workers"|bc)
echo -e "$GREEN $TIME秒单个worker进程的qps为:$worker_qps $END"
else
worker_qps=$(echo "scale=2; $qps/$workers"|bc)
echo -e "$GREEN $TIME秒单个worker进程的qps为:$worker_qps $END"
fi
}
ngx_qps_day() {
qps=`echo "scale=2; $days_pv/86400"|bc`
echo -e "$GREEN 一天的pv是: $days_pv $END"
echo -e "$GREEN 一天的qps是: $qps $END"
}
ngx_qps_crest() {
qps_dub=`echo $days_pv|awk '{printf("%.2f\n", ($1*0.8)/(86400*0.2))}'`
echo -e "$GREEN 一天的pv是: $days_pv $END"
echo -e "$GREEN 一天中峰值qps是:$qps_dub $END"
}
ngx_qps_usually() {
qps_dub=`echo $days_pv|awk '{printf("%.2f\n", ($1*0.2)/(86400*0.8))}'`
echo -e "$GREEN 一天的pv是: $days_pv $END"
echo -e "$GREEN 一天中闲余qps是:$qps_dub $END"
}
调用脚本:
. ngx_qps.sh
ngx_qps 30 #计算30秒内的qps及每个worker进程的qps
ngx_qps_day #计算每天的qps

浙公网安备 33010602011771号