nginx apache lighttpd 静态文件 性能测试
上一篇 / 下一篇 2007-06-19 13:34:33 / 个人分类:LAMP
4NgCfd&w0H(e0网络上也有其他的测试结果,但是对nginx及apache的对比都是针对小文件的(44 byte,apache安装时自带的index.htm),而没有考虑到现在web应用中大多数静态文件的size是远远大于44byte的。木铎校园 BBS 社区+O uI4`7M O
木铎校园 BBS 社区w0B$UR d7]&B9}另一个测试结果见:http://www.muduo.net/index.php/8974/viewspace-136293.html木铎校园 BBS 社区,]6g&|u+_+vI@8P
r0DKaH0是我转来的
g^g?&R]f5~ `^g2?0木铎校园 BBS 社区 m+\w8ez9Y"T;b木铎校园 BBS 社区X&[;z'u&bvX
WEB server 测试
6@_6|{F5Pl0测试目的:木铎校园 BBS 社区e.gk6AJDu(C
Web Servers nginx、perlbal、apache、lighttpd (目前只测了apache和nginx,lighttpd做了部分测试)
oHTmi0Q2y4pL0 测试通过上述4种web server,评估其访问静态文件时速度及做代理访问的速度(代理服务性能未作测试)木铎校园 BBS 社区Z
m&]%@Qw2C
测试工具及平台:木铎校园 BBS 社区Y9E1_~Tl:}:JT
apache bench木铎校园 BBS 社区U&{l%b5p[`[Y&i
autobench
^ U%H.w7k
TX
N0 httperf木铎校园 BBS 社区,M}u.B'j!lz,|v7Z-O
webbench木铎校园 BBS 社区k's*g9c,DT2m5{
3台Dell 1950(4核2Xeon3.0GHz / 2Gmem / 146G 10k rpm disk):server1、server2、server3、server5
Z3v7v\#p6m,P0 server1作为web server,处理从server2 、server3 及server5发来的web请求
$tW nrT&E0测试策略
'`:w+t mLv0* 根据应用特点,不使用web server对动态页面的支持功能,所以,所有的web server编译时不增加对动态应用的支持
5[&p1`U-T0* 在上一条的基础上,尽可能增加web server本身的优化措施,如:cache等
` M9lVoD3A2p!w0测试步骤:木铎校园 BBS 社区\}#~?7?4x-w
测试访问静态文件的速度:
@G~$Z'@N$\1me}01) 在server1手工编译上述4中web server,并分别生成如下大小文件供测试使用(44byte,1k,4k,8k,16k,32k,128k,512k,1024k,2048k,5120k),单位byte,如需要可再增加对更大文件的测试木铎校园 BBS 社区O A)u:nlYi2v
2) 配置并优化web server,具体配置见附录
"r6l_.p(Rt w,p03) 测试并取得数据木铎校园 BBS 社区Qdc,J"H
测试数据及简单分析木铎校园 BBS 社区&c`M#VZ3j0h@
说明:由于测试设计的问题,测试先对16k byte 以上的文件进行的测试,通过工具httperf+autobenche,取得数据如下:木铎校园 BBS 社区*k7f[%VL1lL_a
测试命令:木铎校园 BBS 社区$y(] T(i/EP(e
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
A6~u8cd7ls0* 对 size=16K 文件的处理能力木铎校园 BBS 社区+dQ)y.sp
* Nginx server对16k文件的处理结果木铎校园 BBS 社区VQ)f7hs-_7DA
/z4P1L#@{Uq!k"nc0* Apache 2.2 对 16k 文件的处理结果
'xbOD S^\w0木铎校园 BBS 社区 G}*h+vdK+yR* Lighttpd对16k文件的处理结果木铎校园 BBS 社区HL_N^ N)W)E
木铎校园 BBS 社区3jxDaM"p分析:
5K6XDK~-x5hzW0* 从上图可以看出,对与size=16k的文件,ngxin的性能比apache 2.2 mpm=worker方式性能不能算优越,相反,对于并发访问量大于16k的时候,apache的承载能力要比nginx的性能略强,而lighttpd是最强的
PB1V
uIw^0* 由于测试客户机的限制,单台客户机并发访问量达到极限,导致大并发测试压力无法达到。
rj7ZO+py-J0* 对32k文件的处理能力
w$} }$A+GVvo0* Nginx对32k文件的处理能力木铎校园 BBS 社区K2j@a7RR?
3J0^9n'@-` W,e0* Apahce 2.2 mpm=worker对32k文件的处理能力木铎校园 BBS 社区@9Dv;C5Qt[
3iO^V1LwH0* Lighttpd对32k文件的处理能力木铎校园 BBS 社区g[3x1xy
3E3?
p
H9`0分析:木铎校园 BBS 社区"v7Xq"[|pxa7f
从上图可以看出nginx的性能曲线比apache的稳定的多,并且在大并发访问量的情况下基本没有性能衰减
o5`q.Mq;Y nz4|0* 对128k文件的处理能力木铎校园 BBS 社区`x#HXh
* Ngxinx对128k文件处理能力木铎校园 BBS 社区"x4G"|:R8`x)_'f"B+z&\
i6eE2K0A/V a6}0* Apache2.2木铎校园 BBS 社区,?I6T@ |;o$V6j}
木铎校园 BBS 社区1{{)t%V!]HkIEo* Lighttpd
"?zKB"@r0}p4y3sN6D0分析:nginx在大并发访问量的情况下,性能能够迅速上升,并表现稳定
/^M;A!hZl0* 对512k文件的处理能力木铎校园 BBS 社区6f,a-Q*Ir6R
* Nginx对512k文件的处理能力
* Apache2.2对512k文件的处理能力
f7Y"b];~Q01kUw Z;C:x2qR2Yoh0* Lighttpd对512k文件的处理能力
.\ ZD/@u p%A\0木铎校园 BBS 社区Wy I'zy 分析:对512k的稍大文件,apache的性能表现是最好的,稳定、高效;nginx的性能无论在处理效率还是稳定性上略逊于apache,但较lighttpd稍好。
,mt wk?'Xs0* 对1024k文件的处理能力木铎校园 BBS 社区|0L
Mh7h
* Nginx对1024k文件的处理能力木铎校园 BBS 社区Fq&K5sk%E^$n
* Apache2.2对1024k文件的处理能力木铎校园 BBS 社区/y[Q V7o}F
木铎校园 BBS 社区`+TYi%k0w* Lighttpd对1024k文件的处理能力木铎校园 BBS 社区p.?ZwS YlB&sv
$`3~)km"UH,^0分析:对于大流量(带宽)的访问,apache的负载能力是最好的,优势明显。而nginx比lighttpd略好一点
{TY5AR+B3L.@Hh0* 对2048k文件的处理能力
"X,p
klR"K0* Ngxin对2048k文件的处理能力
|o1i Ss4X/i-D0* Apache2.2对2048k文件的处理能力
X+?izlBR0木铎校园 BBS 社区ek%`?x Y L* Lighttpd对2048k文件的处理能力木铎校园 BBS 社区t*KG`/z~z
木铎校园 BBS 社区2zI7_'} z:r+r(UgMI分析:同1024k文件
|8gqpI0* 对5120k文件的处理能力
;{7L)W!@}$aU-q0* Nginx对5120k文件的处理能力
+U:\Uo^2r'Y4o1`?0* Apache2.2对5120k文件的处理能力
z[Ba)x O$`0木铎校园 BBS 社区$Gy"h-x$Rz7r* Lighttpd对5120k文件的处理能力
/\5U8cJE;P.x0木铎校园 BBS 社区1k4E#Co1pV,pYHH分析:对于5m这样的大文件,apache和lighttpd很不理想,甚至不能够完成测试便结束与测试客户端的连接。而nginx虽然曲线不稳定,但是相比来讲,nginx还是略优于其他两者的。
Eq"Lh5s7? ^$|~D+JL0%KFl&{1^%QUl0对小于16k文件的测试
wd\DV0S8{rr5\0 说明:这个测试开始的时候并没有考虑size< 16k文件的情况,因为根据web应用的特点及idisk应用,考虑用户上传及下载的文件 > 16k的情况应该在大多数。但是由于上面的测试所分析到的结果同网上公布关于nginx及lighttpd的性能对比数据并不吻合,nginx的性能低于本人及lcq的预期,所以,增加了对16k以下文件的测试。同时,由于考虑到测试客户端服务器数量的不够,httperf触发到web server的压力不够,改使用使用apache bench这个测试工具,测试参数如下:木铎校园 BBS 社区XoY Il
ab -n 100000 -c 128http://192.168.1.249/$file.html
lT#tA]\7?&Y/E#`iO t:Q0Server Hostname:木铎校园 BBS 社区)E0N0Q"pgOX
192.168.1.249木铎校园 BBS 社区z%c7o{,bHQ'w2e D+M+M
Server Port:
2Z
lm1\"m6|080
5g&T(q+dn&Jk0木铎校园 BBS 社区k5Cy}'^$`i9yj7Xp
Document Path:
s
Imc0]E0/index.html木铎校园 BBS 社区eC.Hp1~8D/ZMw
Document Length:木铎校园 BBS 社区S6hOgv#z.K6?q6o
44 bytes
4MO!R/D%e#c0木铎校园 BBS 社区@/]+W!]9a a|
* 对于44字节的文件(apache安装包中的自带文件index.html)木铎校园 BBS 社区Z7tOw2pFnI
s
* Nginx 对44byte文件的处理能力
k"`*z bZ\3a,p]0Complete requests:木铎校园 BBS 社区"a eK0u|
100000
TN6~K'T3b2@8a-f!Bg8e0Failed requests:木铎校园 BBS 社区
I-L
o8uZCx7n#M
0木铎校园 BBS 社区~1a%t.UET!eE!s7S
Write errors:
?k:_I eE+S:n00
#Ihq\$Z0Total transferred: 25401778 bytes木铎校园 BBS 社区4hE{+mM
S
HTML transferred: 4400308 bytes
h$^ a7bB0Requests per second: 7816.66 [#/sec] (mean)木铎校园 BBS 社区{*cOO.o;U'F9XVa
Time per request: 16.375 [ms] (mean)
w
DyXm5|B0Time per request: 0.128 [ms] (mean, across all concurrent requests)木铎校园 BBS 社区Ccd:wUmt
Transfer rate: 1939.00 [Kbytes/sec] received
* Apache2.2对44 byte文件的处理能力
/r3`3X3o ?)H~0Concurrency Level:
r&a$AN'[P,`W0500木铎校园 BBS 社区V2`P)["q
Time taken for tests:木铎校园 BBS 社区d2m'v)sB1\;Pwm#?
243.420213 seconds
