轻量级压力测试工具ab,wrk,locust 分析 & 对比(人人可以进行压力测试)
上一篇 / 下一篇 2018-08-10 17:40:35 / 个人分类:测试工具
51Testing软件测试网X{8Snp&x
51Testing软件测试网.B.}Rg/sh
51Testing软件测试网lZwq!WM y
之前介绍了4款压力测试工具
:| ^-Hc|CD0http://www.51testing.com/?uid-497177-action-viewspace-itemid-371100051Testing软件测试网Cd!h4v)F|
$[1pqJ6~F{B/o0
今天再推荐下两款更强大的。51Testing软件测试网 N d;mGW4YGe
51Testing软件测试网E.rXTT,T
!Yo/oSf%K6nXm051Testing软件测试网m8K'C$o6i W!bT
R/UJw3r*N Z051Testing软件测试网~N}?N,Q
y7r
1.51Testing软件测试网X;\3l8E&r A4P
ab51Testing软件测试网O7h)sp`w,u
是目前最常见的压力测试工具。其典型用法如下:
~ bvo/_ _J(Y)z0shell> ab -k -n 1000 -c 10 -t 100 http://www.isTester.com/zhichang/177.html
+vn&Wc}.s `h.mQ0其中,参数「c」表示的是并发,
sJy(c o.u2TO2qa0参数「t」表示的是整个测试持续的时间。
.TY'{i'Iq0一个很容易被忽视的参数是「k」,它会增加请求头Connection: Keep-Alive,相当于开启了HTTP长连接,这样做一方面可以降低测试服务器动态端口被耗尽的风险,另一方面也有助于给目标服务器更大的压力,测试出更接近极限的结果。
Wi|l1G6F4s4@(t051Testing软件测试网i/Q5kMGSK
51Testing软件测试网9L/\'\j:G1]]U
2.
;d c|MM6w'G1zM0wrk51Testing软件测试网 LC U9S1i4c0J
相对于ab来说最大的优点是「支持多线程」,51Testing软件测试网z!V KSf#z"^r
这样更容易发挥多核CPU的能力,从而更容易测试出系统的极限能力。51Testing软件测试网Te4F6}M@
51Testing软件测试网1a*A{F)sE
其典型用法如下:51Testing软件测试网&?$R:P4@ uqi_.V
shell> wrk -c 100 -d 10 -t 12 http://www.isTester.com/zhichang/177.html
X)\9lP1U[6{pH{0其中,参数「c」表示的是并发,参数「d」表示的是整个测试持续的时间。此外,可以通过参数「t」来控制线程数(缺省值为2),实际使用中可以视情况酌情增大。
%}.F @ q!]k'XP0
%X5s"u/s^C7uA(p051Testing软件测试网io!rE H {4~3t"bMV
%xZH+J^(T0
如果顺着ab的使用惯性,你可能会纳闷为什么wrk没有类似参数「k」这样打开HTTP长链接的选项,这是因为wrk使用的是 HTTP/1.1,缺省开启的是长连接,而ab使用的是HTTP/1.0,缺省开启的是短链接。51Testing软件测试网*c"^dV&J5Ol\ H:m7y
不过这也引出另一个问题,如何用wrk测试短链接?实际上很简单:51Testing软件测试网mWv't xl
shell> wrk -H "Connection: Close" -c 100 -d 10 -t 12http://www.isTester.com/zhichang/177.html
[t'B,yU*n051Testing软件测试网
~~ zl"Z*PU1wT
51Testing软件测试网ECYn(Dap6u
通过参数「H」传递一个自定义的Connection请求头来关闭长链接。
s ^T@A@4p3~%}0此外,wrk支持自定义脚本编程,不过相对较复杂…51Testing软件测试网6MK_3Kb(b h vlH
51Testing软件测试网+O5Pl
Ru4fI;n#O
vB\.Q2])I `*Y051Testing软件测试网CT LtA
3.
I"@WLV#M0Q0locust
PoY(t8jKf0相对于ab、wrk来说最大的优点是它不再只是测试一个url,而是可以测试一个「自定义的场景」,其中可以包含多个有相互关联的url51Testing软件测试网9r]]&[#z6tC
此外,它还是分布式可扩展的,可以模拟大量用户的访问,由此可以得到更贴近真实环境的测试数据。
3o P-|!n'?'URygj051Testing软件测试网1rH+eG l6uX
CjB[V _i051Testing软件测试网jzi&U4k2E
关于locust的具体用法有点复杂,可以自行查阅官方文档。
m iu0Bs%q,T051Testing软件测试网*\K*d$l A
51Testing软件测试网
H$A9gSXR
A4Yci;e8u
51Testing软件测试网;K6{um_Yb
T:L_$THdd!m|0
/
-pJEt D0
;~S}_)UJI(n0
除了ab,wrk,locust等压力测试工具之外,还有很多其它选择,其中比较有代表性的是 GoReplay 和 TcpCopy,
JN:Ea*h7D(^$l0可以拷贝线上服务器的真实流量并转发到测试服务器上去,用真实流量来测试,如此得到的数据无疑是更可信的。
5g&A\"n2]n;NS0不过它们的用法更复杂…51Testing软件测试网:s9JTR'kVYK,eE2T
51Testing软件测试网*p6S$]B-g/g'y
H
B p4e@BioM7\"Ob051Testing软件测试网R5\IW.b(Fk:l l
补充,
$c{9hq[:R:y P0说说压力测试过程中一些注意事项:51Testing软件测试网l'Y3Y6A*J&A ~/r [
-_B[vV&z7B051Testing软件测试网!Cc%_,WZ
1. 首先,在使用ab或者wrk的时候,最好在同一个局域网里独立的服务器上运行,因为这些压力测试工具本身也会消耗系统资源。51Testing软件测试网#q#}b\\-yW}8x
51Testing软件测试网%UrUs`8vKN|
2. 其次,即便使用了长连接,那么也应该注意端口 TIME_WAIT 问题,视情况可能需要在sysctl配置中开启 tcp_tw_recycle或 tcp_tw_reuse之类的选项;
`)o5_ C EN e,aH"Q051Testing软件测试网xUuL!_f(_
51Testing软件测试网-^8?]ei$R R
]p*eA
3. 最后,在压力测试过程中,最好时刻留意哪些资源成为了瓶颈,比如:CPU是不是跑满了,IO是不是跑满了,带宽是不是跑满了等等。