isTester.com发起人,某互联网公司测试经理,十年测试经验,公众号“简尚”; 致力于软件测试从业者综合能力提升 & 职场人每日进阶。 微信isTester 》》博客文章未标注转载均属「原创」,转载找老徐授权;

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

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

51Testing软件测试网P;G``S6_
轻量级压力测试工具ab,wrk,locust分析&对比(人人可以进行压力测试) 

~sO'|t.r|%B.u.r051Testing软件测试网vVMr Q%B

51Testing软件测试网}4M_Av5oI&[

l S$^V"k0


6]uv4IV"NU.\6xn9a051Testing软件测试网B!WFa?+z7F

之前介绍了4款压力测试工具 51Testing软件测试网7G;@4QMV|@\%p

http://www.51testing.com/?uid-497177-action-viewspace-itemid-371100051Testing软件测试网t&K:Gu6^ _R9]-B


2v(bS,P2iR#Mg;i0

!XL8H)R'UfgN!k0

今天再推荐下两款更强大的51Testing软件测试网hq,q(L y R_

51Testing软件测试网&?dpG+o$vE~
51Testing软件测试网/X~U ZI5C&w2S

51Testing软件测试网?3fH9a#Kf8Pn

2h4LV#}0Y?G)g9@,l0


Chf(oz(G051Testing软件测试网'|lY/Z*T;PV

1.51Testing软件测试网!Kd~4]X\m

ab51Testing软件测试网D }(b&gqL;Y9PF

是目前最常见的压力测试工具。其典型用法如下:51Testing软件测试网:l1q%hHl

shell> ab -k -n 1000 -c 10  -t 100 http://www.isTester.com/zhichang/177.html

3` rdsl#[5J/t0

其中,参数「c」表示的是并发,

.^Q,`pECda*A0

参数「t」表示的是整个测试持续的时间。51Testing软件测试网6P7nh`7R R:M:_

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

Wi.Nq7o%pE)L?1}0


[@I:K2l~`v$Tr0

ZbE'HP)S0


4r]9|cC051Testing软件测试网F^9yV] L9o*g3H

2.51Testing软件测试网7h9o gf ah} }:pB

wrk

6o{%[&c:]M0

相对于ab来说最大的优点是「支持多线程」,51Testing软件测试网@dN&ni

这样更容易发挥多核CPU的能力,从而更容易测试出系统的极限能力51Testing软件测试网_v1{O#\/f6]#M%t


_"g&[2i_W.o051Testing软件测试网?m*b5v R

其典型用法如下:

1K5|2o cspK0

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

~)D @of}X0

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

c8[E1W Cp}!Q0

51Testing软件测试网 j iS;S$M }8@H

:D5dr8oL0

51Testing软件测试网#E3`-Z[N5HN!pCL9px
51Testing软件测试网e"Dpa%d]"E-G

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

%m[;@{^ q/P0

不过这也引出另一个问题,如何用wrk测试短链接?实际上很简单:

} p0amU4~K2@0

shell> wrk -H "Connection: Close" -c 100 -d 10 -t 12http://www.isTester.com/zhichang/177.html51Testing软件测试网'cyQ Y&Y.X|$F


*q5wNj/m051Testing软件测试网/`1JjK7Qh4Cn@/t

通过参数「H」传递一个自定义的Connection请求头来关闭长链接。51Testing软件测试网 mF^+\#S)z

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

C lM{-[lR \0


P4Rl)[*o/x}FV[0

0|$\ k0E%n Ay0


p![i ^1WU`0

%r[7|"d4xz0

3.

!{|QKl[0

locust

8w3~!VS `B0

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

.W"J?E^;u0

此外,它还是分布式可扩展的,可以模拟大量用户的访问,由此可以得到更贴近真实环境的测试数据。51Testing软件测试网r0{rD3~Q i S aZ


F(Ac9Q[&{0

l5D0`\m,aG~D,q9g O0


(?f9lyb$r051Testing软件测试网*mp3MZ*Q

关于locust的具体用法有点复杂,可以自行查阅官方文档

xMp y|Xe2F:t0

51Testing软件测试网 S|5y S0y/Ww
51Testing软件测试网'{+|5j)v!YAIn'y!g


o1kR*hv/S3e,C051Testing软件测试网)Tx z M UK8u E @


-uv$I-C1S)lID051Testing软件测试网k#Tpkj$C

/

&CY4p-|-z.I8j0

51Testing软件测试网:zx5^1P7J

U*\6BPP'dL$}0

除了abwrklocust等压力测试工具之外,还有很多其它选择,其中比较有代表性的是 GoReplay  TcpCopy51Testing软件测试网'W`z*Y7QDIWh9u

可以拷贝线上服务器的真实流量并转发到测试服务器上去,用真实流量来测试,如此得到的数据无疑是更可信的。51Testing软件测试网3POXC O r

不过它们的用法更复杂51Testing软件测试网h ~R$D;W


#E1^*B(nau:`0

^PA jkY0

51Testing软件测试网D7g3O G7jUWo
51Testing软件测试网\)d+Yy]^

补充,51Testing软件测试网.\`;up$mP^

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

_(k HO:s#]Eq N W(h0


-pW!\"jY051Testing软件测试网%q${%V~F/R.F

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

51Testing软件测试网/Hqq;SN
51Testing软件测试网6s f#u&V2S-^H

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


_ I1Ed2od F"uLu,U0
51Testing软件测试网V s'eUn[Fk

3. 最后,在压力测试过程中,最好时刻留意哪些资源成为了瓶颈,比如:CPU是不是跑满了,IO是不是跑满了,带宽是不是跑满了等等51Testing软件测试网2`'R"w'f7? A-\ A

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

d2f7MZ9h0j%V]0


zaeK;Y ]1F{4h0

2D9YjB3jL+}0

51Testing软件测试网'VV5V"Q+}g$l

G {P$W gdv r0

如上,整理自网络

a6Y5TOg~4uW0
XI Ds%j7d}Y0

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

 

评分:0

我来说两句

显示全部

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

Open Toolbar