通过ab向Nginx并发压力测试

10 篇文章 0 订阅

测试对象

阿里云服务器*3
公司内部电脑虚拟机 *1

测试方法

通过使用httpd-tools包中的命令工具 ab 命令 -c 指定并发数 -n 指定请求数 然后通过脚本 连续服务器的nginx进行压力测试

脚本内容

#!/bin/bash
if [ $# -ne 4 ]
	then
	echo "$0 ab -c -n  http://baidu.com/index.html"
	exit 1
fi
_concurrency=$1
_requests=$2
_url=$4
_add=$3
#_path=`mktemp -d `
#mkdir -p $_path
echo  "ab ${_concurrency} ${_requests} ${_url}"
_time=${_concurrency}
_file=`echo ${_url} |awk -F/ '{print$3}'`
_path=`mktemp -d ${_file}.XXXXXXXX`
mkdir -p ${_path}
#chmod 777 -R $_path
#echo '        $_requests  $_url  report ' >> ${_file}_${_requests}_report.txt
echo "concurrency      Requests_per_second              Time_per_request     Transfer rate    " >> ${_file}_${_requests}_report.txt
echo "并发数           平均每秒完成请求数               平均请求处理时间    每秒从服务器获取数据长度    " >> ${_file}_${_requests}_report.txt
for  ((i=$_concurrency;i<=$_requests;i+=$_add))
do
if [  "${_concurrency}" -ge 20000 ];then
 echo "${_concurrency} >= 20000"
 exit 1
fi
echo "ab -c $i   -n ${_requests}  ${_url}   >>  ${_path}/_${_file}_${_requests}_${_time}_.txt"
ab -r -c $i   -n ${_requests}  ${_url}   >>  ${_path}/_${_file}_${_requests}_${_time}_.txt
_Transfer_rate=`cat ${_path}/_${_file}_${_requests}_${_time}_.txt |grep 'Transfer rate' |awk -F: '{print$2}'`
_Requests_per_second=`cat ${_path}/_${_file}_${_requests}_${_time}_.txt |grep 'Requests per second' |awk -F: '{print$2}'`
_Time_per_request=`cat ${_path}/_${_file}_${_requests}_${_time}_.txt|grep 'across all concurrent requests' |grep 'Time per request' |awk -F[:\ ]   '{print$11$12}'`
echo " $i           ${_Requests_per_second}      ${_Time_per_request}  ${_Transfer_rate}    " >> ${_file}_${_requests}_report.txt
_time=$(($_time+10))
sleep 3
done

阿里4u8G9mbps 未进行优化

sh ab.sh 100 1000 100 http://xxx.xxx.xxx.xxx/
Document Path: /index.html
Document Length: 162 bytes

concurrency      Requests_per_second     Time_per_request          Transfer rate    
并发数             平均每秒完成请求数          平均请求处理时间           每秒从服务器获取数据长度    
 100               61.05 [#/sec] (mean)      16.379[ms]            20.93 [Kbytes/sec] received    
 200               44.76 [#/sec] (mean)      22.340[ms]            15.34 [Kbytes/sec] received    
 300               44.76 [#/sec] (mean)      22.340[ms]            15.34 [Kbytes/sec] received    
 400               44.76 [#/sec] (mean)      22.341[ms]            15.34 [Kbytes/sec] received    
 500               34.14 [#/sec] (mean)      29.289[ms]            11.70 [Kbytes/sec] received    
 600               65.42 [#/sec] (mean)      15.285[ms]            22.42 [Kbytes/sec] received    
 700               45.02 [#/sec] (mean)      22.213[ms]            15.43 [Kbytes/sec] received    
 800               44.96 [#/sec] (mean)      22.241[ms]            15.41 [Kbytes/sec] received    
 900               26.84 [#/sec] (mean)      37.262[ms]            9.20 [Kbytes/sec] received    
 1000             46.55 [#/sec] (mean)      21.484[ms]            15.95 [Kbytes/sec] received    
 100               65.66 [#/sec] (mean)      15.229[ms]            22.51 [Kbytes/sec] received    
 400               57.45 [#/sec] (mean)      17.406[ms]            19.69 [Kbytes/sec] received    
 700               54.38 [#/sec] (mean)      18.389[ms]            18.64 [Kbytes/sec] received    
 1000             57.42 [#/sec] (mean)      17.414[ms]            19.68 [Kbytes/sec] received 

服务器未优化高并发 带宽未跑满(当时本地网速不好)用户体验慢
sh ab.sh 5000 10000 5000 http://xxx.xxx.xxx.xxx/
Document Path: /index.html
Document Length: 33590 bytes

concurrency        Requests_per_second          Time_per_request     Transfer rate    
并发数              平均每秒完成请求数              平均请求处理时间         每秒从服务器获取数据长度    
 5000               64.82 [#/sec] (mean)        15.428[ms]            1162.05 [Kbytes/sec] received    
 10000              78.12 [#/sec] (mean)        12.800[ms]            1116.66 [Kbytes/sec] received  

后续拉满带宽 发现 服务器处理水平稳定在吞吐量 60左右因为发现是未优化所以不做评价 服务器并发 需优化

阿里云4u8G9mbps计算型(与上边不是同一台) nginx优化 内核未优化

sh ab.sh 100 1000 100 http://xxx.xxx.xxx/

Document Path: /index.html
Document Length: 3774 bytes

concurrency          Requests_per_second   Time_per_request     Transfer rate    
并发数                平均每秒完成请求数        平均请求处理时间    每秒从服务器获取数据长度    
 100               295.83 [#/sec] (mean)      3.380[ms]            1157.91 [Kbytes/sec] received    
 200               235.23 [#/sec] (mean)      4.251[ms]            920.71 [Kbytes/sec] received    
 300               231.47 [#/sec] (mean)      4.320[ms]            905.98 [Kbytes/sec] received    
 400               267.37 [#/sec] (mean)      3.740[ms]            1046.52 [Kbytes/sec] received    
 500               269.91 [#/sec] (mean)      3.705[ms]            1056.46 [Kbytes/sec] received    
 600               275.47 [#/sec] (mean)      3.630[ms]            1078.21 [Kbytes/sec] received    
 700               288.40 [#/sec] (mean)      3.467[ms]            1128.81 [Kbytes/sec] received    
 800               277.70 [#/sec] (mean)      3.601[ms]            1086.92 [Kbytes/sec] received    
 900               275.50 [#/sec] (mean)      3.630[ms]            1078.31 [Kbytes/sec] received    
 1000               268.01 [#/sec] (mean)      3.731[ms]            1049.02 [Kbytes/sec] received    

sh ab.sh 2000 4000 100 http://xxx.xxx.xxx/

concurrency      Requests_per_second   Time_per_request     Transfer rate    
并发数           平均每秒完成请求数         平均请求处理时间    每秒从服务器获取数据长度       
 2000               244.96 [#/sec] (mean)      4.082[ms]            944.76 [Kbytes/sec] received    
 2100               252.01 [#/sec] (mean)      3.968[ms]            975.11 [Kbytes/sec] received    
 2200               262.38 [#/sec] (mean)      3.811[ms]            1008.15 [Kbytes/sec] received    
 2300               239.10 [#/sec] (mean)      4.182[ms]            888.00 [Kbytes/sec] received    
 2400               246.44 [#/sec] (mean)      4.058[ms]            936.56 [Kbytes/sec] received    
 2500               250.44 [#/sec] (mean)      3.993[ms]            950.31 [Kbytes/sec] received    
 2600               249.42 [#/sec] (mean)      4.009[ms]            956.49 [Kbytes/sec] received    
 2700               252.62 [#/sec] (mean)      3.958[ms]            981.27 [Kbytes/sec] received    
 2800               250.54 [#/sec] (mean)      3.991[ms]            958.59 [Kbytes/sec] received    
 2900               256.27 [#/sec] (mean)      3.902[ms]            978.86 [Kbytes/sec] received    
 3000               264.95 [#/sec] (mean)      3.774[ms]            1010.77 [Kbytes/sec] received    
 3100               249.34 [#/sec] (mean)      4.011[ms]            928.70 [Kbytes/sec] received    
 3200               253.49 [#/sec] (mean)      3.945[ms]            975.27 [Kbytes/sec] received    
 3300               248.78 [#/sec] (mean)      4.020[ms]            941.27 [Kbytes/sec] received    
 3400               250.35 [#/sec] (mean)      3.994[ms]            952.20 [Kbytes/sec] received    
 3500               250.81 [#/sec] (mean)      3.987[ms]            959.87 [Kbytes/sec] received    
 3600               253.68 [#/sec] (mean)      3.942[ms]            985.00 [Kbytes/sec] received    
 3700               254.09 [#/sec] (mean)      3.936[ms]            972.93 [Kbytes/sec] received    
 3800               251.27 [#/sec] (mean)      3.980[ms]            964.28 [Kbytes/sec] received    
 3900               252.10 [#/sec] (mean)      3.967[ms]            978.94 [Kbytes/sec] received    
 4000               267.87 [#/sec] (mean)      3.733[ms]            1092.38 [Kbytes/sec] received     

sh ab.sh 1000 5000 1000 http://xxx.xxx.xxx/

并发数           平均每秒完成请求数               平均请求处理时间    每秒从服务器获取数据长度    
 1000               184.50 [#/sec] (mean)      5.420[ms]            692.14 [Kbytes/sec] received    
 2000               177.15 [#/sec] (mean)      5.645[ms]            640.62 [Kbytes/sec] received    
 3000               225.92 [#/sec] (mean)      4.426[ms]            708.46 [Kbytes/sec] received    
 4000               228.99 [#/sec] (mean)      4.367[ms]            846.16 [Kbytes/sec] received    
 5000               222.72 [#/sec] (mean)      4.490[ms]            849.51 [Kbytes/sec] received 

带宽接近跑满 因为未优化系统内核 所以 吞吐量 200左右 服务器仍需优化

阿里4u8G 25mbps计算型(与上边不是同一台) nginx优化 内核优化

sh ab.sh 100 10000 100 http://xxx.xxx.xxx/

concurrency      Requests_per_second   Time_per_request     Transfer rate    
并发数            平均每秒完成请求数         平均请求处理时间    每秒从服务器获取数据长度   
2000-10000
2000              1253.70 [#/sec]         0.798 [ms]       1022.49 [Kbytes/sec] received   
5000-10000
5000              1468.41 [#/sec]         0.681 [ms]       1192.08 [Kbytes/sec] received
10000             1408.56 [#/sec]         0.710 [ms]       1151.79 [Kbytes/sec]
10000 - 10000
10000             1163.08 [#/sec]         0.860 [ms]        950.96 [Kbytes/sec] 
5000-10000
5000              1281.43 [#/sec]         0.780 [ms]       1044.06 [Kbytes/sec] received

由于此条测试服务器位于国外 带宽拉不满 吞吐量约在 1200左右
仍需优化

本地虚拟机 优化后 4u3g 带宽计算后得 大约40Mbps

sh ab,sh 1000 100000 1000 http://xxx.xxx.x/
Document Path: /index.html
Document Length: 612 bytes

concurrency        Requests_per_second              Time_per_request     Transfer rate    
并发数              平均每秒完成请求数                 平均请求处理时间      每秒从服务器获取数据长度    
 1000               6363.37 [#/sec] (mean)      0.157[ms]            5207.52 [Kbytes/sec] received    
 2000               6202.42 [#/sec] (mean)      0.161[ms]            5075.81 [Kbytes/sec] received    
 3000               6412.32 [#/sec] (mean)      0.156[ms]            5247.58 [Kbytes/sec] received    
 4000               6654.15 [#/sec] (mean)      0.150[ms]            5445.49 [Kbytes/sec] received    
 5000               6453.49 [#/sec] (mean)      0.155[ms]            5281.28 [Kbytes/sec] received    
 6000               6268.02 [#/sec] (mean)      0.160[ms]            5129.50 [Kbytes/sec] received    
 7000               6914.07 [#/sec] (mean)      0.145[ms]            5658.20 [Kbytes/sec] received    
 8000               6549.30 [#/sec] (mean)      0.153[ms]            5359.68 [Kbytes/sec] received    
 9000               6877.12 [#/sec] (mean)      0.145[ms]            5627.96 [Kbytes/sec] received    
 10000               6955.50 [#/sec] (mean)      0.144[ms]            5692.10 [Kbytes/sec] received    
 11000               6923.77 [#/sec] (mean)      0.144[ms]            5666.13 [Kbytes/sec] received    
 12000               6414.53 [#/sec] (mean)      0.156[ms]            5249.39 [Kbytes/sec] received    
 13000               6712.48 [#/sec] (mean)      0.149[ms]            5493.22 [Kbytes/sec] received    
 14000               6108.54 [#/sec] (mean)      0.164[ms]            4998.98 [Kbytes/sec] received    
 15000               4979.40 [#/sec] (mean)      0.201[ms]            4074.94 [Kbytes/sec] received    
 16000               6058.28 [#/sec] (mean)      0.165[ms]            4957.85 [Kbytes/sec] received    
 17000               5896.29 [#/sec] (mean)      0.170[ms]            4819.88 [Kbytes/sec] received    
 18000               6898.72 [#/sec] (mean)      0.145[ms]            5645.63 [Kbytes/sec] received    
 19000               6313.78 [#/sec] (mean)      0.158[ms]            5166.94 [Kbytes/sec] received    
 20000               7268.51 [#/sec] (mean)      0.138[ms]            5948.25 [Kbytes/sec] received  

本地环境吞吐量大约稳定在 6800左右

测试结果

项目吞吐量requests/s(QPS)
4u8G9mbps 未进行优化50~60
阿里云4u8G9mbps nginx优化 内核未优化250~260
阿里云4u8G 25mbps nginx优化 内核优化1200~1300
本地虚拟机 4u3G 带宽约40Mbps nginx优化 内核优化6800~6900

吞吐量(QPS)越高,代表服务器 并发性能越强
由于本地向阿里云服务器测试会收到网络长距离传输干扰所以数据会稍微低一些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dendysan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值