nginx apache lighttpd 静态文件 性能测试
上一篇 / 下一篇 2007-06-19 13:34:33 / 个人分类:LAMP
CD"? `Cb0网络上也有其他的测试结果,但是对nginx及apache的对比都是针对小文件的(44 byte,apache安装时自带的index.htm),而没有考虑到现在web应用中大多数静态文件的size是远远大于44byte的。木铎校园 BBS 社区,d2GQdUGw/q^F
8n(jK)ww(kP0另一个测试结果见:http://www.muduo.net/index.php/8974/viewspace-136293.html
VO4z${9c[-e0O"@'tg'OV)n7b y0是我转来的木铎校园 BBS 社区D3j0fShI:z8X6jn
Z~%dK v I2\q#I0木铎校园 BBS 社区7_
R$? }H:`&i)}bv
WEB server 测试
FwF"l%DYc#E0测试目的:
.p1M,s2W2e9`0 Web Servers nginx、perlbal、apache、lighttpd (目前只测了apache和nginx,lighttpd做了部分测试)木铎校园 BBS 社区$gH ?0B(Jo$vD
测试通过上述4种web server,评估其访问静态文件时速度及做代理访问的速度(代理服务性能未作测试)
h*h:z2x2RF_0测试工具及平台:木铎校园 BBS 社区q"l hZ!h9rF
apache bench木铎校园 BBS 社区
G]2O+Ia7I
autobench木铎校园 BBS 社区"e&\1x2}%blP
httperf木铎校园 BBS 社区}v2jl8\H7g
webbench木铎校园 BBS 社区J)t7H;^k[af
3台Dell 1950(4核2Xeon3.0GHz / 2Gmem / 146G 10k rpm disk):server1、server2、server3、server5木铎校园 BBS 社区p}/ei%?.yBwG,x
server1作为web server,处理从server2 、server3 及server5发来的web请求木铎校园 BBS 社区#a(l*_])f
测试策略木铎校园 BBS 社区 M%St0L0O?Pa
* 根据应用特点,不使用web server对动态页面的支持功能,所以,所有的web server编译时不增加对动态应用的支持木铎校园 BBS 社区}A*{f[{b
* 在上一条的基础上,尽可能增加web server本身的优化措施,如:cache等
1Qq#~\U#`K0测试步骤:
Ci]$z7LP H'a0 测试访问静态文件的速度:木铎校园 BBS 社区ZW!QF.q7X
1) 在server1手工编译上述4中web server,并分别生成如下大小文件供测试使用(44byte,1k,4k,8k,16k,32k,128k,512k,1024k,2048k,5120k),单位byte,如需要可再增加对更大文件的测试
*l)X"[+s9a(~*y0I
T02) 配置并优化web server,具体配置见附录木铎校园 BBS 社区ShU!~;D
3) 测试并取得数据木铎校园 BBS 社区*y"_x`{9n X3A
测试数据及简单分析木铎校园 BBS 社区4W#~
{"z#\~s
说明:由于测试设计的问题,测试先对16k byte 以上的文件进行的测试,通过工具httperf+autobenche,取得数据如下:
'RDUrm }x0测试命令:
x9nF7sW M0for 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 社区of4g/N g0d9ma
* 对 size=16K 文件的处理能力木铎校园 BBS 社区lf8N{kKsw
* Nginx server对16k文件的处理结果木铎校园 BBS 社区1ZDwz3TRIU
pJ-bDG"w|0* Apache 2.2 对 16k 文件的处理结果木铎校园 BBS 社区ly_u,[7E
木铎校园 BBS 社区_ |;I*Vhr HK* Lighttpd对16k文件的处理结果木铎校园 BBS 社区9H'qfC/h,Y/rBC
Y/MNB2Y6~e4^@0分析:木铎校园 BBS 社区+`#V#yA:C-OS5DD
* 从上图可以看出,对与size=16k的文件,ngxin的性能比apache 2.2 mpm=worker方式性能不能算优越,相反,对于并发访问量大于16k的时候,apache的承载能力要比nginx的性能略强,而lighttpd是最强的
7h um5l)I b*_i`0* 由于测试客户机的限制,单台客户机并发访问量达到极限,导致大并发测试压力无法达到。
}jQ9Sp5}0* 对32k文件的处理能力木铎校园 BBS 社区7_&jAQu~O7y|L^
* Nginx对32k文件的处理能力木铎校园 BBS 社区i0h%M.QO
/T"w0q|-^(I8Z \0* Apahce 2.2 mpm=worker对32k文件的处理能力
6Qq7l C0`s9t[0木铎校园 BBS 社区/d1v~$r9\X* Lighttpd对32k文件的处理能力
!l,lc0w D{8l/SS0 W},lL^
s1l]0分析:木铎校园 BBS 社区L5g8q H8y{iM
从上图可以看出nginx的性能曲线比apache的稳定的多,并且在大并发访问量的情况下基本没有性能衰减
t8q\:?|"_Yn w0* 对128k文件的处理能力
;R/|ib9t-_0* Ngxinx对128k文件处理能力木铎校园 BBS 社区6Um3}1XE5t
Cmn2U
* Apache2.2
']Ug H }k!F0木铎校园 BBS 社区S/R@.G7W* Lighttpd
'R9T{1Y#?!oV0木铎校园 BBS 社区/c,EC0f%e X)c&ax分析:nginx在大并发访问量的情况下,性能能够迅速上升,并表现稳定
Z;{Z5z5G!sBZ0* 对512k文件的处理能力木铎校园 BBS 社区'A#j*L
Fa:n(^#\
* Nginx对512k文件的处理能力木铎校园 BBS 社区:u.C6]2nh
* Apache2.2对512k文件的处理能力
vF6re'G*N({0O,\`xV7B%t*Q0* Lighttpd对512k文件的处理能力木铎校园 BBS 社区7t7B-K[wUY.b
木铎校园 BBS 社区JNLy/qm 分析:对512k的稍大文件,apache的性能表现是最好的,稳定、高效;nginx的性能无论在处理效率还是稳定性上略逊于apache,但较lighttpd稍好。
,n.~)l/`E5\0* 对1024k文件的处理能力
z\'u0NK
Y'G/^0* Nginx对1024k文件的处理能力
Lk,X_$c$k~o0* Apache2.2对1024k文件的处理能力木铎校园 BBS 社区']wf M2kP7K
,Y4kS/F.H0* Lighttpd对1024k文件的处理能力木铎校园 BBS 社区 L|$@ _:@n/K*?
木铎校园 BBS 社区M-xPn J(UWI!e分析:对于大流量(带宽)的访问,apache的负载能力是最好的,优势明显。而nginx比lighttpd略好一点木铎校园 BBS 社区`nv#rl(^'pg
* 对2048k文件的处理能力
j9MDi]I0* Ngxin对2048k文件的处理能力木铎校园 BBS 社区w-C*OL*f#Y/_[
$P'x%g ]M2c*n ZRS0* Apache2.2对2048k文件的处理能力木铎校园 BBS 社区OJ:V|LSb\
,R-?d+s]0* Lighttpd对2048k文件的处理能力
R2G8JH+|s;DwL-M!E02X
[5O#`#JE;sD0分析:同1024k文件木铎校园 BBS 社区x d(xh*H*J&U%ci
* 对5120k文件的处理能力木铎校园 BBS 社区0i-hZ-S0i
_F
* Nginx对5120k文件的处理能力
R+cm/X(Vo%l_q;L0* Apache2.2对5120k文件的处理能力
6OBZod KJL0木铎校园 BBS 社区[i7T%bZ,]/w?s* Lighttpd对5120k文件的处理能力
]3}?aLB3w0木铎校园 BBS 社区f)`l w1N,Z1nuu分析:对于5m这样的大文件,apache和lighttpd很不理想,甚至不能够完成测试便结束与测试客户端的连接。而nginx虽然曲线不稳定,但是相比来讲,nginx还是略优于其他两者的。
|\ K.snrvZ0木铎校园 BBS 社区i$kA}p7|,S{(y对小于16k文件的测试
|9eD"wv9G C0 说明:这个测试开始的时候并没有考虑size< 16k文件的情况,因为根据web应用的特点及idisk应用,考虑用户上传及下载的文件 > 16k的情况应该在大多数。但是由于上面的测试所分析到的结果同网上公布关于nginx及lighttpd的性能对比数据并不吻合,nginx的性能低于本人及lcq的预期,所以,增加了对16k以下文件的测试。同时,由于考虑到测试客户端服务器数量的不够,httperf触发到web server的压力不够,改使用使用apache bench这个测试工具,测试参数如下:木铎校园 BBS 社区Oi#C;geyh'G4Ms};h
ab -n 100000 -c 128http://192.168.1.249/$file.html
X9t;v2`+r"B{.x5s0Server Hostname:
2\2l.E8T@TU9lfQ0192.168.1.249木铎校园 BBS 社区6l-hk-CX.g
n
Server Port:木铎校园 BBS 社区{2A}&t`k ~ M
80
7J*b*vf5xM5km1@P"l0木铎校园 BBS 社区NT9v[1Qd-O7ptl
Document Path:木铎校园 BBS 社区6m6] M+F~O c.[.AR
/index.html木铎校园 BBS 社区tT{f;h&o4h
Document Length:木铎校园 BBS 社区4O9\;D%|5el4P2Mw
44 bytes
/y;p9x z.rv#m;M0* 对于44字节的文件(apache安装包中的自带文件index.html)
J rCPWG0* Nginx 对44byte文件的处理能力木铎校园 BBS 社区
H/sL1i0[["P
K
Complete requests:木铎校园 BBS 社区WW[\J9Xb})CI*B
100000
jgU?TJ)BT0Failed requests:
8{$G;j}/f00木铎校园 BBS 社区\O#G_n hPGM6q-Q
Write errors:木铎校园 BBS 社区 Y#h:P)@4H$M
0
{8GjiF!k|0Total transferred: 25401778 bytes木铎校园 BBS 社区$|
x~-{*}h
oFc~/Q
HTML transferred: 4400308 bytes木铎校园 BBS 社区OI4x4DO$a;b2i9z
Requests per second: 7816.66 [#/sec] (mean)木铎校园 BBS 社区
A(M0Fs!wxBM
Time per request: 16.375 [ms] (mean)
_9WQ1fy0Time per request: 0.128 [ms] (mean, across all concurrent requests)木铎校园 BBS 社区&Y|8g4^;@P!~S\(n
Transfer rate: 1939.00 [Kbytes/sec] received木铎校园 BBS 社区j{ b
Dr
* Apache2.2对44 byte文件的处理能力
2np XU"Bs0Concurrency Level:木铎校园 BBS 社区:nd*Qozu~p+}9g6a
500
PGFn
JKm ]u1L(w0Time taken for tests:木铎校园 BBS 社区G.v|1P;ef
243.420213 seconds木铎校园 BBS 社区8IW ymt p#C
Complete requests:木铎校园 BBS 社区2XUELh%YH]_
1000000木铎校园 BBS 社区-X$H4Yx M ^`
Failed requests:木铎校园 BBS 社区Eg/Fi-I~
0
Iw4R iD3w0Write errors:
wWp6A*JQY\
V00
[:|]/h/O,s,B0Total transferred:木铎校园 BBS 社区:hvj:NF4r8Vm,L,P5T
319000319 bytes
sG$O,{/I0HTML transferred:木铎校园 BBS 社区Cue4[v'P
44000044 bytes
@'w cMN_5h0Requests per second:木铎校园 BBS 社区%o
OBujMu8b
4108.12 [#/sec] (mean)木铎校园 BBS 社区@[ bXao5`f/I
Time per request:木铎校园 BBS 社区dv%PU:v
121.710 [ms] (mean)
ohz
n$S|q*K \0Time per request:木铎校园 BBS 社区P R D's-?g}s
0.243 [ms] (mean, across all concurrent requests)
d
m/w&QI;W [,_*c0Transfer rate:木铎校园 BBS 社区hLu_ d1`
1279.77 [Kbytes/sec] received木铎校园 BBS 社区4^
Yeeq$M;F.W$C}
* 对128byte的文件
/dK
H*G:T~QH`+eKA0* Nginx对128byte文件处理能力
2u7^h m {0` P-k0Concurrency Level:
k
ye-~
k/g.m8L$]
h3k0500木铎校园 BBS 社区,Zf@U`*D)@
Time taken for tests:
pqFWBL0123.838121 seconds
S*P+bDn$n4gSa0Complete requests:木铎校园 BBS 社区V;?$a@jD
1000000
/E
c~ k"V]t0Failed requests:
uK'K$o"pH1Z3i00
)wP_ VL@5g0Write errors:
g2w%bWO
ExiI00木铎校园 BBS 社区nl&SW-Z8aB0[`
Total transferred:木铎校园 BBS 社区1t{N#~'m
339000000 bytes
p| o+ia*\-s}z:X0HTML transferred:木铎校园 BBS 社区bk;yO5K
128000000 bytes木铎校园 BBS 社区v+HHZF
Requests per second:
v.Q+cI+xZ08075.06 [#/sec] (mean)木铎校园 BBS 社区aYcXg_
Time per request:
OwzMgx)K$b061.919 [ms] (mean)
9^/FeNm0Time per request:
4Y
vxIVtt00.124 [ms] (mean, across all concurrent木铎校园 BBS 社区a w$R h4B'vD![
requests)Transfer rate:木铎校园 BBS 社区5A7N\p4h+k{
2673.28 [Kbytes/sec] received
* Apache对128byte文件处理能力
^@;FM[\0* 对512 byte文件的处理能力木铎校园 BBS 社区K:r%WEki
* Nginx对512 byte文件的处理能力
T0g| W va K
O0Concurrency Level:
S
vxw3X)Q-p'A$ph0500
4~"RF
l9xitT8e0Time taken for tests: 木铎校园 BBS 社区e#I]`*p1p
124.590902木铎校园 BBS 社区d3d]|E
secondsComplete requests: 木铎校园 BBS 社区;c*_5qmUEf
mw
}
1000000木铎校园 BBS 社区7]n)YLJ%sg;jZ
} [.T2Tf`YKcd0Failed requests: 木铎校园 BBS 社区.\`4z&` J5E
0木铎校园 BBS 社区0Yt
TzS/z8g8{I%C
Write errors:木铎校园 BBS 社区+nIV.ef
0
0C7BI9l b"PX0Total transferred:木铎校园 BBS 社区Y'g!LlbY
723000000 bytes木铎校园 BBS 社区*g~i)gP@z%e0A
HTML transferred:
j{;`j7M R0512000000 bytes
tT#|PoHtB!aR0Requests per second:木铎校园 BBS 社区)bc?PB]D
8026.27 [#/sec] (mean)
,pn6B/]|0U0Time per request:
4S/|9gqa!A062.295 [ms] (mean)木铎校园 BBS 社区@M:gP{OH{x
Time per request:木铎校园 BBS 社区c*y:gcc
0.125 [ms] (mean, across all concurrent requests)
)M)g&r3D4^!o0Transfer rate:木铎校园 BBS 社区Y6Pl
|C
5666.98 [Kbytes/sec] received
,|)p!Z*q"k;{~(X0* Apache对512byte文件的处理能力木铎校园 BBS 社区$~R@yc!S]
Concurrency Level:
}1}u$jI8Y0500
2}5PBa? ^0Time taken for tests:木铎校园 BBS 社区e z4Q0Td
117.321116 seconds木铎校园 BBS 社区
y Irvv(z(h!h
Complete requests:
#F5lAJe"?01000000
A5WL%Hl
[\8AW0Failed requests:
N"zf"P0l3T00木铎校园 BBS 社区)U;|_r
doQ
Write errors:木铎校园 BBS 社区t5^hD;| F!olE
0木铎校园 BBS 社区~
A;{+J/e
Total transferred:
wm/C9~8Bx0789109671 bytes木铎校园 BBS 社区P
_m C:u'B
HTML transferred:
;rTe:G%iv/Ur0512071168 bytes
#Fr H
tWm ]U9uH0Requests per second:木铎校园 BBS 社区X+V"H6\7ET{%a
8523.61 [#/sec] (mean)木铎校园 BBS 社区`^'{ Q%j/l-}6\z
Time per request:木铎校园 BBS 社区7m'B-o$^h+W_@2o
58.661 [ms] (mean)木铎校园 BBS 社区l-Q#i5]KN
@jj
Time per request:
\5p`,^"m$k.a1k&R00.117 [ms] (mean, across all concurrent requests)
;us%Z6M/x;dzwv0Transfer rate:木铎校园 BBS 社区(Dxf.T4V4XS4[ Kzn
6568.42 [Kbytes/sec] received木铎校园 BBS 社区{l3cI[
O
* 对于1k的文件
M `6if)O(_
\/tN0* Nginx对1k文件的处理能力木铎校园 BBS 社区?3N
|Cm r5c3[O
Concurrency Level:木铎校园 BBS 社区dsca?
500
{wb4N?;X%_0Time taken for tests:木铎校园 BBS 社区:dC$b |&l+i]Z
128.156121 seconds
4he t5C#O!CK`C{0Complete requests:
-_H.} n\K|$HX4t01000000
AH)T@ t7]yv0Failed requests:
.Ns1{l9xqW00
w!CR&tXi*O;y b [5H0Write errors:
I!X[L/K^0s(Z00木铎校园 BBS 社区/A\N!e)q
Total transferred:木铎校园 BBS 社区aY;]P;z1u"_0r4b
1236006180 bytes
uD@%{1o U8yqN0HTML transferred:木铎校园 BBS 社区4DYZU-Xc
1024005120 bytes木铎校园 BBS 社区.w5G[OW
J)u
Requests per second:木铎校园 BBS 社区@)`a8o!^
n@6y
7802.98 [#/sec] (mean)
NAokKe%e0Time per request:
^MNZ:rX%_-sG064.078 [ms] (mean)
c`.cY-Z0Time per request:木铎校园 BBS 社区1B%s4I
n!d"XaQo+r
0.128 [ms] (mean, across all concurrent requests)木铎校园 BBS 社区9{e9p1_
t
Transfer rate:
'L8KLtE]09418.49 [Kbytes/sec] received木铎校园 BBS 社区k!NF0e?z7}f
* Apache2.2对1k文件的处理能力木铎校园 BBS 社区F*d-S x9iEg]#X:my.r
Concurrency Level:
1AV*};r"Q;w v5B Un0500木铎校园 BBS 社区/Y"^(L$r+i3QZ v
Time taken for tests:
.y3Y6Tzh"^Mfv0114.995165 seconds木铎校园 BBS 社区 A3FVW ?"Gs
Complete requests:
9yG2Z(@'M0zW01000000
;S2O\?w;r%b*md D0Failed requests:
`#f&~R6i:KWw8G00
P}A)kS8jm0Write errors:
:aKPrA
y-}00
R?1bDdp0Total transferred:木铎校园 BBS 社区0eXEd5l'j
1302243474 bytes
d.i|'Y8dA4V,Qx0HTML transferred:
+D6q(iL4RRk01024191488 bytes
Z NiF'yg0Requests per second:
5h%iSIz$Rt08696.02 [#/sec] (mean)
T2M(s
v1o1u;y8[5b6B0Time per request:木铎校园 BBS 社区s5}3h;A,n9X\ T
57.498 [ms] (mean)
1C0N}'w5`c0Time per request:
'HBF rN*Y%_`00.115 [ms] (mean, across all concurrent木铎校园 BBS 社区2b]s,k`Pp4\2p*m
requests)
plX/Lp(f+g0Transfer rate:木铎校园 BBS 社区T*\FV4sY
11058.92 [Kbytes/sec] received木铎校园 BBS 社区+}P9U.mDBx
* 对于4k 的文件
H\9@;dCc)[M#k0* Nginx处理4k文件
$Su:RYI1L0Concurrency Level:木铎校园 BBS 社区x%a\$P hQ/j*U
500木铎校园 BBS 社区4_Dk-`f0lP5\^1]^
Time taken for tests:
Qs(rW,O\0135.155806 seconds
`(c%VQ+iOQ|0Complete requests:
:YW8PUq-{6u5a-A\ \B01000000木铎校园 BBS 社区TTf7V bW
?'AO
Failed requests:木铎校园 BBS 社区K8Q&A+b
_'ydh2Y
0
eas T0F0Write errors:木铎校园 BBS 社区&?ii)j0R4j
0木铎校园 BBS 社区:db)MI`C"W
Total transferred:
@r Eh0i.lQ pG/w013032916 bytes木铎校园 BBS 社区{V2T3OX7P
HTML transferred:木铎校园 BBS 社区%}n/j1ol'a
-198967296 bytes木铎校园 BBS 社区:~EUJ.KP
vjt
Requests per second:木铎校园 BBS 社区Fu1?zP,r0bRi
7398.87 [#/sec] (mean)
S?~j#e0Time per request:
XA:ud'b[7D&uD067.578 [ms] (mean)
{/~{`5[#o{^,x{{0Time per request:木铎校园 BBS 社区e-d1PTi
X&b
0.135 [ms] (mean, across all concurrent
I_k&H$M&i-U0requests)Transfer rate:
"Xii)Lh\:l094.17 [Kbytes/sec] received木铎校园 BBS 社区m F
j.m [u\
9o6L-c)RJ Az4_:Z4hB|0* Apache2.2处理4k大小的文件
;U7QO)A2l)e4u{d"Z j0Concurrency Level:
Gs+NB;J*G)m&c
