轻量级压力测试工具ab,wrk,locust 分析 & 对比(人人可以进行压力测试)
上一篇 / 下一篇 2018-08-10 17:40:35 / 个人分类:测试工具
51Testing软件测试网 P}@RXqO
M1k)K Zz$GD
AY0V0
之前介绍了4款压力测试工具
9zq/ht;C7m0http://www.51testing.com/?uid-497177-action-viewspace-itemid-3711000
:ljr/Xm#`D p0
5L H.z1Oe7U,M0
今天再推荐下两款更强大的。51Testing软件测试网(A(w;~|)N$x!} F
51Testing软件测试网;Cj4Z'H4r u
51Testing软件测试网&akLn,l'e0O~
51Testing软件测试网b)H8\e/j%p
51Testing软件测试网
`U*WNFlSF'{p
*LA7n ^o6Q!Dx0A#Y051Testing软件测试网vu[Lr4B,^h1n
1.
8E+[/uO[z0ab
;cV+RvYx1vka0是目前最常见的压力测试工具。其典型用法如下:
;C"bszD,l0shell> ab -k -n 1000 -c 10 -t 100 http://www.isTester.com/zhichang/177.html
4^K j{/T wjH5C0其中,参数「c」表示的是并发,51Testing软件测试网9_!{{?$y [#R[!P
参数「t」表示的是整个测试持续的时间。51Testing软件测试网%E%A$lmpjI6B,A1vA
一个很容易被忽视的参数是「k」,它会增加请求头Connection: Keep-Alive,相当于开启了HTTP长连接,这样做一方面可以降低测试服务器动态端口被耗尽的风险,另一方面也有助于给目标服务器更大的压力,测试出更接近极限的结果。51Testing软件测试网"Y-rqk R$G\
51Testing软件测试网"Q
TE3Nj(Z
51Testing软件测试网"G*@{WP;] gr
51Testing软件测试网3C[:^_ C(|
2.
fj] Sn%`#a B0wrk51Testing软件测试网:bE$]`w
相对于ab来说最大的优点是「支持多线程」,51Testing软件测试网R&g{zf ]5L(y m
这样更容易发挥多核CPU的能力,从而更容易测试出系统的极限能力。
4u1s9X1~\9{D0
S#P,y6O;P#tf)c051Testing软件测试网F;?|4C QUyT
其典型用法如下:51Testing软件测试网^7_C.p&`;u3j0ck3AP
shell> wrk -c 100 -d 10 -t 12 http://www.isTester.com/zhichang/177.html51Testing软件测试网:B+_jL`T \`s7E6Q
其中,参数「c」表示的是并发,参数「d」表示的是整个测试持续的时间。此外,可以通过参数「t」来控制线程数(缺省值为2),实际使用中可以视情况酌情增大。51Testing软件测试网+E+r*C2O7avH`@,y
51Testing软件测试网w6u.N5u,{
g`7R/XC$~_
51Testing软件测试网 m)]*WY6kF
如果顺着ab的使用惯性,你可能会纳闷为什么wrk没有类似参数「k」这样打开HTTP长链接的选项,这是因为wrk使用的是 HTTP/1.1,缺省开启的是长连接,而ab使用的是HTTP/1.0,缺省开启的是短链接。
lka.LO0zJ}0不过这也引出另一个问题,如何用wrk测试短链接?实际上很简单:51Testing软件测试网-cy:cg,MVSRY/j
shell> wrk -H "Connection: Close" -c 100 -d 10 -t 12http://www.isTester.com/zhichang/177.html51Testing软件测试网Q.lJ3z@i(m7Ns-m
IU@n4e"|j051Testing软件测试网PB+e
Bzn-d
通过参数「H」传递一个自定义的Connection请求头来关闭长链接。51Testing软件测试网Zw&MnJJ6kk
此外,wrk支持自定义脚本编程,不过相对较复杂…
~ zz5v!q:xgo j0
]}EF$E(uX!A0
51Testing软件测试网 Dl2F5D-{`r0SO#g
51Testing软件测试网1s4b8p#y"?u8lZ1f"h
3.51Testing软件测试网iB\!z J
locust
K cA8f\+Ku0相对于ab、wrk来说最大的优点是它不再只是测试一个url,而是可以测试一个「自定义的场景」,其中可以包含多个有相互关联的url
bK#wk/Z6])|O+}Kz0此外,它还是分布式可扩展的,可以模拟大量用户的访问,由此可以得到更贴近真实环境的测试数据。51Testing软件测试网{5}Q2Z(Y7O'w/yX0Rw
}'E.r/Y[
G1f0`s051Testing软件测试网Yi^)h#~B-dH,Fo
51Testing软件测试网)npnYr@
51Testing软件测试网`%ij%?u[2R`2u
关于locust的具体用法有点复杂,可以自行查阅官方文档。51Testing软件测试网#z7qr*]+Aj3{2KL
D
C%d{@/s0
&k+J[+}$jV051Testing软件测试网 Q2f
R7e9Cf X
w#Oic$pw_f0
/51Testing软件测试网D C$r,ac
&O3`*tiXg$W[051Testing软件测试网N.CDk
@,On1Eg0B6\
除了ab,wrk,locust等压力测试工具之外,还有很多其它选择,其中比较有代表性的是 GoReplay 和 TcpCopy,51Testing软件测试网0Ne K"}W]
可以拷贝线上服务器的真实流量并转发到测试服务器上去,用真实流量来测试,如此得到的数据无疑是更可信的。51Testing软件测试网G0[[*Xt*Oz:b
不过它们的用法更复杂…
m6pNI$k gt0
CR?u/`e}
M+m~ m0
51Testing软件测试网4_EbW&B:W9B$e
51Testing软件测试网y)V!u-e\s ?&^
补充,51Testing软件测试网:PO N-?/ho
说说压力测试过程中一些注意事项:
7V.[ @v!X051Testing软件测试网ajcA_1DA:x
51Testing软件测试网4d7R3z3M9\XWf!|n
1. 首先,在使用ab或者wrk的时候,最好在同一个局域网里独立的服务器上运行,因为这些压力测试工具本身也会消耗系统资源。
s/J0p:]"Q!H ?051Testing软件测试网6re^r[gt1A
2. 其次,即便使用了长连接,那么也应该注意端口 TIME_WAIT 问题,视情况可能需要在sysctl配置中开启 tcp_tw_recycle或 tcp_tw_reuse之类的选项;51Testing软件测试网_AZJ.ak
51Testing软件测试网E+|nFx
a wYF
3. 最后,在压力测试过程中,最好时刻留意哪些资源成为了瓶颈,比如:CPU是不是跑满了,IO是不是跑满了,带宽是不是跑满了等等。