测试对象
阿里云服务器*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)越高,代表服务器 并发性能越强
由于本地向阿里云服务器测试会收到网络长距离传输干扰所以数据会稍微低一些