IDO老徐,在深圳,某上市公司质量部负责人,干了十二年软件测试,公号"简尚" ,博客isTester.com ,关注「软件测试从业者综合能力提升」,微信957863300

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

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

51Testing软件测试网J)y&~$Oo_X!a
轻量级压力测试工具ab,wrk,locust分析&对比(人人可以进行压力测试) 51Testing软件测试网p2{p C#dVV:z

|1G/b{U9{0

51Testing软件测试网 P}@RXqO

m7G*a#w3Yx u/b _9_5]"my0


M1k)KZz$GD AY0V0

,Q#g1Pf;H/?0

之前介绍了4款压力测试工具 

9zq/ht;C7m0

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

:ljr/Xm#`D p0


5LH.z1Oe7U,M0

RXy R0}$q(H0

今天再推荐下两款更强大的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[z0

ab

;cV+RvYx1vka0

是目前最常见的压力测试工具。其典型用法如下:

;C"bs zD,l0

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

4^K j{/TwjH5C0

其中,参数「c」表示的是并发,51Testing软件测试网9_!{{?$y [#R[!P

参数「t」表示的是整个测试持续的时间。51Testing软件测试网%E%A$lmpjI6B,A1vA

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

51Testing软件测试网"Q TE3Nj(Z

BNW#l+S0

51Testing软件测试网"G*@ {WP;]g r
51Testing软件测试网3C[:^_C(|

2.

fj] Sn%`#aB0

wrk51Testing软件测试网: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$~_

k"R cR5nm0

51Testing软件测试网 m)]*W Y6kF

S:Cu0x"i.zuc+D0

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

lka.L O0zJ}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 B zn-d

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

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

~z z5v!q:xgoj0


]} EF$E(uX!A0

P2z,a~}!w0

51Testing软件测试网 Dl2F5D-{`r0SO#g
51Testing软件测试网1s4b8p#y"?u8lZ1f"h

3.51Testing软件测试网iB\!z J

locust

K cA8f\+Ku0

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

bK#w k/Z6])|O+}K z0

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

:] ^%EraV [+mI!F0


&k+J[+}$jV051Testing软件测试网 Q2f R7e9CfX


w#Oic$pw_f0

~)LLX Ev(o*P0

/51Testing软件测试网D C$r,ac


&O3`*tiXg$W[051Testing软件测试网N.CDk @,On1Eg0B6\

除了abwrklocust等压力测试工具之外,还有很多其它选择,其中比较有代表性的是 GoReplay  TcpCopy51Testing软件测试网0NeK"}W]

可以拷贝线上服务器的真实流量并转发到测试服务器上去,用真实流量来测试,如此得到的数据无疑是更可信的。51Testing软件测试网G0[[*Xt*Oz:b

不过它们的用法更复杂

m6pNI$k gt0


CR?u/`e} M+m~m0

g+e7{EuE)q0

51Testing软件测试网4_ EbW&B:W9B$e
51Testing软件测试网y)V!u-e\s ?&^

补充,51Testing软件测试网:PO N-?/ho

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

7V.[ @v!X0

51Testing软件测试网ajcA_1DA:x
51Testing软件测试网4d7R3z3M9\XWf!|n

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

s/J0p:]"Q!H?0

51Testing软件测试网6re ^r[ gt1A

k3ze$h E o3?i#y0

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

51Testing软件测试网E+|nFx a wY F

6l6al2~%u v k no0

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

Hmn\ m]%u0_0

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

x3q4m/dcc#G0

51Testing软件测试网3vww2H {1G(F
51Testing软件测试网 P&T0uh6`e6TL1e

51Testing软件测试网*[ E }v2DFj-Sm
51Testing软件测试网K.Z8B1c/\ yR.y$l

如上,整理自网络51Testing软件测试网'k6wO'G!Dn

51Testing软件测试网JZ(hkW

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

 

评分:0

我来说两句

xuquan

xuquan

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

日历

« 2024-04-24  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 914563
  • 日志数: 427
  • 建立时间: 2012-06-04
  • 更新时间: 2022-02-23

RSS订阅

Open Toolbar