nginx apache lighttpd 静态文件 性能测试
上一篇 / 下一篇 2007-06-19 13:34:33 / 个人分类:LAMP
)Js6ax~p:d"I0网络上也有其他的测试结果,但是对nginx及apache的对比都是针对小文件的(44 byte,apache安装时自带的index.htm),而没有考虑到现在web应用中大多数静态文件的size是远远大于44byte的。
+H"B B6eZq3QV+Wu0%}E(g+i.VsM.j&]}0另一个测试结果见:http://www.muduo.net/index.php/8974/viewspace-136293.html木铎校园 BBS 社区5x&au2p c1@7T7a
木铎校园 BBS 社区6~Mo0l cf(b5j^ O是我转来的
Iu]h j/w Cdl,J0木铎校园 BBS 社区:[!J7F,k#yo-F4[
\Y D tPV-O%m VF0WEB server 测试
8d} L5Xea p0测试目的:
lde ~Q$zeg@]0 Web Servers nginx、perlbal、apache、lighttpd (目前只测了apache和nginx,lighttpd做了部分测试)
"zt m"tGy0 测试通过上述4种web server,评估其访问静态文件时速度及做代理访问的速度(代理服务性能未作测试)
/phDZ/|c.j0测试工具及平台:
E-K$n~
z]'r
|"sH0 apache bench木铎校园 BBS 社区 `}0jQ3b!a_8x0h/g!g
P
autobench
6WIr/Q8sr Ld0 httperf木铎校园 BBS 社区,Rc#zj:J%C"h2J(\t v
webbench
N7HX-@iRDn0 3台Dell 1950(4核2Xeon3.0GHz / 2Gmem / 146G 10k rpm disk):server1、server2、server3、server5
S#v@f,d0 server1作为web server,处理从server2 、server3 及server5发来的web请求
$Es(rM7SsX8b0测试策略
U-J&LFj0* 根据应用特点,不使用web server对动态页面的支持功能,所以,所有的web server编译时不增加对动态应用的支持木铎校园 BBS 社区0B0I4TNyU
* 在上一条的基础上,尽可能增加web server本身的优化措施,如:cache等木铎校园 BBS 社区8E`8C0G
h8ly.}
测试步骤:木铎校园 BBS 社区P3CS0l$I#p]O
测试访问静态文件的速度:木铎校园 BBS 社区`&l-`'t4r,c
1) 在server1手工编译上述4中web server,并分别生成如下大小文件供测试使用(44byte,1k,4k,8k,16k,32k,128k,512k,1024k,2048k,5120k),单位byte,如需要可再增加对更大文件的测试木铎校园 BBS 社区.~$w2~$iq? _&qu8L
2) 配置并优化web server,具体配置见附录
/xY"\7~ k*~G
VE#Mg03) 测试并取得数据
f6^9Iky7K4~0测试数据及简单分析
8p U0K~P,lm0 说明:由于测试设计的问题,测试先对16k byte 以上的文件进行的测试,通过工具httperf+autobenche,取得数据如下:
TxGcaR0测试命令:木铎校园 BBS 社区P7B7Cn'z4Ak)k `
for size in 1 4 8; do autobench_admin --single_host --host1 192.168.1.249 -uri1 /"$size"k.html --low_rate=300 --high_rate=6000 --rate_step=300 --num_conn=6000 --clients 192.168.1.248:4600,192.168.1.247:4600,192.168.1.245:4600 -file "$size"k_autobench_apache.csv; done木铎校园 BBS 社区a3ytg
?0aT,Tc
P
* 对 size=16K 文件的处理能力木铎校园 BBS 社区)Gewy1jf7P G#}
* Nginx server对16k文件的处理结果
?X%| S/o6Q|0* Apache 2.2 对 16k 文件的处理结果
"C?b K`+Wq0木铎校园 BBS 社区;LR$X"U'gX(G* Lighttpd对16k文件的处理结果木铎校园 BBS 社区 IK`bhG O5f
L%~!` o{F0分析:木铎校园 BBS 社区 wb[&f| s
* 从上图可以看出,对与size=16k的文件,ngxin的性能比apache 2.2 mpm=worker方式性能不能算优越,相反,对于并发访问量大于16k的时候,apache的承载能力要比nginx的性能略强,而lighttpd是最强的
:q2l)S H.f0* 由于测试客户机的限制,单台客户机并发访问量达到极限,导致大并发测试压力无法达到。木铎校园 BBS 社区
ajw _6b{%U
* 对32k文件的处理能力木铎校园 BBS 社区/[1f*s8Drr
* Nginx对32k文件的处理能力
* Apahce 2.2 mpm=worker对32k文件的处理能力
"r&IS5ddGQu2S;o0Q.re[m0* Lighttpd对32k文件的处理能力木铎校园 BBS 社区/oN.M+mR~dB
木铎校园 BBS 社区:iM st'Jc$_$P|4H分析:
4FZn*N)G
ZUT'Q0 从上图可以看出nginx的性能曲线比apache的稳定的多,并且在大并发访问量的情况下基本没有性能衰减木铎校园 BBS 社区{`
z6xG]D(S
* 对128k文件的处理能力木铎校园 BBS 社区C)EGv~5b2Fk
* Ngxinx对128k文件处理能力
,M7R*QqP-dS0p0* Apache2.2木铎校园 BBS 社区!l/Gnfp@ AD
L8e*|$lP;[k4c"R p)s4l/CU0* Lighttpd
W-QO%WP8W){E0木铎校园 BBS 社区iQKB$_'S%R分析:nginx在大并发访问量的情况下,性能能够迅速上升,并表现稳定
2Qd!k:p%Y{5J0* 对512k文件的处理能力
%oY
i4Z~pl0* Nginx对512k文件的处理能力木铎校园 BBS 社区'L1L},IO2`bo`.[
,o NHx~Yv0* Apache2.2对512k文件的处理能力木铎校园 BBS 社区Ie$L1SA r0|FX5R
6bO$k7|~l0* Lighttpd对512k文件的处理能力
}L.f&zNTp"A ]?0木铎校园 BBS 社区 YaU8@)p%Sp^+cX8U 分析:对512k的稍大文件,apache的性能表现是最好的,稳定、高效;nginx的性能无论在处理效率还是稳定性上略逊于apache,但较lighttpd稍好。
Y6g"p3U2He0* 对1024k文件的处理能力木铎校园 BBS 社区-\"T6TRy;TR&F'IQ*O
* Nginx对1024k文件的处理能力木铎校园 BBS 社区:|#?qF,?
sk
G!?d^9aG0* Apache2.2对1024k文件的处理能力
z+J)_t!D0m|0木铎校园 BBS 社区%wT%rA-YQ* Lighttpd对1024k文件的处理能力木铎校园 BBS 社区2Z#[ N;h6c;~
ZR#ma cLw0分析:对于大流量(带宽)的访问,apache的负载能力是最好的,优势明显。而nginx比lighttpd略好一点木铎校园 BBS 社区J2DO2D8r5FK
* 对2048k文件的处理能力
4Q9[AjF*K P4rk0* Ngxin对2048k文件的处理能力木铎校园 BBS 社区0{Z@j;cFJ
* Apache2.2对2048k文件的处理能力
x t,Yu/n0,w2y%H0u2wO I\q0* Lighttpd对2048k文件的处理能力
] C2J%Tc0木铎校园 BBS 社区(V BC] M Hp_$B分析:同1024k文件木铎校园 BBS 社区$L;p
g-CW].@/g)ev
* 对5120k文件的处理能力木铎校园 BBS 社区!C:XRJ9h+aUbi
* Nginx对5120k文件的处理能力
}TVuG0* Apache2.2对5120k文件的处理能力
_;@R7ae)uF+V0.a\W ^8U0* Lighttpd对5120k文件的处理能力木铎校园 BBS 社区R-o#RJ,g/y&[+ACmG
木铎校园 BBS 社区DT^*s~!M|1v2q分析:对于5m这样的大文件,apache和lighttpd很不理想,甚至不能够完成测试便结束与测试客户端的连接。而nginx虽然曲线不稳定,但是相比来讲,nginx还是略优于其他两者的。
L r)Zc||Q0木铎校园 BBS 社区kb0Bv2zq1Y对小于16k文件的测试木铎校园 BBS 社区 xyU3z!Z!p
otP
说明:这个测试开始的时候并没有考虑size< 16k文件的情况,因为根据web应用的特点及idisk应用,考虑用户上传及下载的文件 > 16k的情况应该在大多数。但是由于上面的测试所分析到的结果同网上公布关于nginx及lighttpd的性能对比数据并不吻合,nginx的性能低于本人及lcq的预期,所以,增加了对16k以下文件的测试。同时,由于考虑到测试客户端服务器数量的不够,httperf触发到web server的压力不够,改使用使用apache bench这个测试工具,测试参数如下:木铎校园 BBS 社区9A.R.V4zpf2t!A!s
G:j
R
ab -n 100000 -c 128http://192.168.1.249/$file.html
W3g{c^3J7i0Server Hostname:木铎校园 BBS 社区#h+| ~ Q"Q.F
_
192.168.1.249
UPH?"S5w0Server Port:
$M#FA4ig6da4r(K080木铎校园 BBS 社区2[
t+]1K7\h~uo
木铎校园 BBS 社区6DY4mf.]?3p
Document Path:木铎校园 BBS 社区js,i e$BOx\:~
/index.html
q,[-o)w$G(_?2h&};fY*C0Document Length:
@~#N1GF*[$g+[]h044 bytes
-Qs:GPH0* 对于44字节的文件(apache安装包中的自带文件index.html)
sp@
X%s0* Nginx 对44byte文件的处理能力
_7E{~k[*X J0Complete requests:木铎校园 BBS 社区#i9~
U2B4JA%N6q
100000
p3ZQn`.?I8TC z0L0Failed requests:
y9i9XLx2[8D,Kj9U5vW00木铎校园 BBS 社区*rA^0z uH
Write errors:木铎校园 BBS 社区Y:r#}A!p-^W
0
(n:d0S'L
G0Total transferred: 25401778 bytes木铎校园 BBS 社区6w.Ta"G?l%t/XFx.F
HTML transferred: 4400308 bytes木铎校园 BBS 社区;j+w#CL'W*o3v1|
Requests per second: 7816.66 [#/sec] (mean)
a2Th9UN/q
E0bB0Time per request: 16.375 [ms] (mean)
E l(G(Vy.h'AINGoT0Time per request: 0.128 [ms] (mean, across all concurrent requests)木铎校园 BBS 社区/g
NNT[t
C
Transfer rate: 1939.00 [Kbytes/sec] received
* Apache2.2对44 byte文件的处理能力木铎校园 BBS 社区Ob@1pR0Q:w
Concurrency Level:
5L0l R'd |&Y0500木铎校园 BBS 社区6_-Dk `CVn
Time taken for tests:木铎校园 BBS 社区s!g$kn wWo;X6B+b
243.420213 seconds
t2f:i;kM$c3A0Complete requests:
6Y+l lb6C01000000木铎校园 BBS 社区sFx3Gi
Failed requests:
/Ur0n-qn
Fi@00
$|EN*TGV0Write errors:木铎校园 BBS 社区w#W:P^6|%Z:r"n\
0木铎校园 BBS 社区$e8u/n*cy1vX
Total transferred:木铎校园 BBS 社区1IF)UgG
319000319 bytes
|.Gjb;hA(`?0HTML transferred:
4C9q6VPx'i O044000044 bytes
-u Ev d#{2T9R0Requests per second:木铎校园 BBS 社区I"?4G$@h n/D*rj~ A5h
4108.12 [#/sec] (mean)木铎校园 BBS 社区4r)Lpz0p {8ypw$Z
Time per request:木铎校园 BBS 社区*C)A3J]l-S5m
121.710 [ms] (mean)木铎校园 BBS 社区WR6or(R
Time per request:
5YQKUw WO!Rg{00.243 [ms] (mean, across all concurrent requests)
W@0[[%k'`(\3w n/S0Transfer rate:
