坐标深圳,测试经理,干了十年测试,公号"简尚" ,博客isTester.com ,关注「软件测试从业者综合能力提升 & 职场人每日进阶」,个人微信957863300

轻量级压力测试工具ab,wrk,locust 分析 & 对比(人人可以进行压力测试)

上一篇 / 下一篇  2018-08-10 17:40:35 / 个人分类:测试工具


WZo u,bE9M!s&`0
轻量级压力测试工具ab,wrk,locust分析&对比(人人可以进行压力测试) 

_3Zif`051Testing软件测试网n+s#};M\B(CPa+v


{^Bg @N0

Z-@&K%h)l0


Z:Wc N#^051Testing软件测试网"[9d&GQ r w!j s

之前介绍了4款压力测试工具 51Testing软件测试网^Y N {i

http://www.51testing.com/?uid-497177-action-viewspace-itemid-3711000

S E:WyG+z0

51Testing软件测试网5`%C1SQk ]*ey3L

&|?t}~#@D*h4w0

今天再推荐下两款更强大的

l$K'^wg-c0k0


f"n4n6?.K l051Testing软件测试网 ^]?-@C.O9U]

51Testing软件测试网-m Z _V+zhm

|z$v`c3^m6A0

51Testing软件测试网y t&A f%` ji^z }$`

jNl}(R7YlU0

1.

}QY7I;k J"ooz0

ab

gTI2X!DX3}g0

是目前最常见的压力测试工具。其典型用法如下:51Testing软件测试网 }ep-v1|/v|

shell> ab -k -n 1000 -c 10  -t 100 http://www.isTester.com/zhichang/177.html51Testing软件测试网 Q Lv}`)H

其中,参数「c」表示的是并发,51Testing软件测试网Rv:\^hPee

参数「t」表示的是整个测试持续的时间。

I#J,dyXW0

一个很容易被忽视的参数是「k」,它会增加请求头Connection: Keep-Alive,相当于开启了HTTP长连接,这样做一方面可以降低测试服务器动态端口被耗尽的风险,另一方面也有助于给目标服务器更大的压力,测试出更接近极限的结果。

6^U1Ezw*m _5C0


d$Q U;bK Vw051Testing软件测试网Z+e7Z^Z3Qz9b|


0o5@~X4G#t?$C.jf051Testing软件测试网 c-^ `3`eDy-~

2.51Testing软件测试网 TxWKr"F(IK%X

wrk51Testing软件测试网FB4d6k st%o

相对于ab来说最大的优点是「支持多线程」,51Testing软件测试网D#y J$Cv w]'Eh

这样更容易发挥多核CPU的能力,从而更容易测试出系统的极限能力51Testing软件测试网1O1Z LHH)Y z n0p


r5D `h1Z6O^051Testing软件测试网.eN fz4pm(F(D

其典型用法如下:51Testing软件测试网2~!JT*GT*`r'J

shell> wrk -c 100 -d 10 -t 12 http://www.isTester.com/zhichang/177.html

:Z l0nD*_~ dz2{_0

其中,参数「c」表示的是并发,参数「d」表示的是整个测试持续的时间。此外,可以通过参数「t」来控制线程数(缺省值为2),实际使用中可以视情况酌情增大。51Testing软件测试网O3[ h9T9qH


)}Q&S%Z y1j051Testing软件测试网8d6{n!g.Yr|tQC

51Testing软件测试网]L7DS#`p8b:`
51Testing软件测试网Y md1s9o3EF

如果顺着ab的使用惯性,你可能会纳闷为什么wrk没有类似参数「k」这样打开HTTP长链接的选项,这是因为wrk使用的是 HTTP/1.1,缺省开启的是长连接,而ab使用的是HTTP/1.0,缺省开启的是短链接。

If_)z L0

不过这也引出另一个问题,如何用wrk测试短链接?实际上很简单:51Testing软件测试网&E_'x1Q&C,D.Qa

shell> wrk -H "Connection: Close" -c 100 -d 10 -t 12http://www.isTester.com/zhichang/177.html

.V [J'}){0

51Testing软件测试网!d1uI-d:[d^,Vvi-i
51Testing软件测试网-J3@/nVu

通过参数「H」传递一个自定义的Connection请求头来关闭长链接。51Testing软件测试网f,gx S2G3M

此外,wrk支持自定义脚本编程,不过相对较复杂

0` ^ d(dC0


2F?W h ?051Testing软件测试网.R9x.}Sd%d-QJZ

51Testing软件测试网#g8E8`5{(My:b

I7dWk duU@0

3.

Rz2L(F3D~C,d0

locust51Testing软件测试网 F R4T,}W

相对于abwrk来说最大的优点是它不再只是测试一个url,而是可以测试一个「自定义的场景」,其中可以包含多个有相互关联的url51Testing软件测试网[Xv%j]^

此外,它还是分布式可扩展的,可以模拟大量用户的访问,由此可以得到更贴近真实环境的测试数据。

B^ |1zct"c0


/IDhth:G;}#A051Testing软件测试网.b:Y[7zG T)ckd

51Testing软件测试网U @K"D*c$Hd
51Testing软件测试网NY2deg{)A J/a2`

关于locust的具体用法有点复杂,可以自行查阅官方文档51Testing软件测试网!gr:TR3QL


gPX@ciYv0

5{oU(K1Prg4C(y0

51Testing软件测试网-s\W,Y7UF5R'f

Tr3b kD P%g!?G0


5~MSyy g1b U v0

T$E.MM X~E0

/51Testing软件测试网${0n+l&\I

51Testing软件测试网Lm/Ls+Wq H

,VD&]ke` s0

除了abwrklocust等压力测试工具之外,还有很多其它选择,其中比较有代表性的是 GoReplay  TcpCopy51Testing软件测试网^j H*u9^&_

可以拷贝线上服务器的真实流量并转发到测试服务器上去,用真实流量来测试,如此得到的数据无疑是更可信的。51Testing软件测试网.E.G(V!aJU+R2q

不过它们的用法更复杂

I3L:}\8P[0

51Testing软件测试网c'B YJ/|8j
51Testing软件测试网X bP+ZO!]

51Testing软件测试网S-rs @h8r
51Testing软件测试网:L \,z~1f2N`*A

补充,

H3_){ X-\V K0

说说压力测试过程中一些注意事项:

v%C-q4}d)N%Q0


j5JF{1s0

gp4t:X1E,V-ne0

1. 首先,在使用ab或者wrk的时候,最好在同一个局域网里独立的服务器上运行,因为这些压力测试工具本身也会消耗系统资源

_!P'{ydVX0


*H1D @&xf'p/i2S.^)I051Testing软件测试网 g%SS-~ o_;[ j

2. 其次,即便使用了长连接,那么也应该注意端口 TIME_WAIT 问题,视情况可能需要在sysctl配置中开启 tcp_tw_recycle tcp_tw_reuse之类的选项;

8guS]$dNXc4R*p0

51Testing软件测试网5[)V;g{$@,?1g,nL

6y f*O to0

3. 最后,在压力测试过程中,最好时刻留意哪些资源成为了瓶颈,比如:CPU是不是跑满了,IO是不是跑满了,带宽是不是跑满了等等

gv2T7Qr MC/] {0

如果什么都没跑满,但是压力测试结果却上不去,那么就需要反思一下是不是压力测试工具使用方法有误,或者是不是在off-CPU上消耗了太多时间,只有知道了瓶颈在哪,才能突破系统的极限。

c4T ij5`,L0


I]#Dg$cp*Er0

UM`'z6F2{*g0

51Testing软件测试网 tJ g%K"Y3i.^|I

F \n"\%}8SSf0

如上,整理自网络

#a)U$h%V)v4K_L5J051Testing软件测试网 MULo:kF

TAG: 性能测试 压力测试 测试工具

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar