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

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

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

51Testing软件测试网gU$I;Sd
轻量级压力测试工具ab,wrk,locust分析&对比(人人可以进行压力测试) 51Testing软件测试网G0E~3f so)EOz+ud$w

y y8} ]G&Uo2v0

51Testing软件测试网X{8Snp&x
51Testing软件测试网.B.}Rg/sh

51Testing软件测试网lZwq!WMy

2l uw.d#D*x0

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

:| ^-Hc|CD0

http://www.51testing.com/?uid-497177-action-viewspace-itemid-371100051Testing软件测试网Cd!h4v)F|


$[1pqJ6~ F{B/o0

Hq'o;A2z?0

今天再推荐下两款更强大的51Testing软件测试网Nd;mGW4YGe

51Testing软件测试网E.rXTT,T

7b:M'b)i \M/m0


!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)z0

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

+vn&Wc}.s `h.mQ0

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

sJ y(c o.u2TO2qa0

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

.TY'{i'Iq0

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

Wi|l1G6F4s4@(t0

51Testing软件测试网i/Q5kMGSK

v4B~-g]Ql'D0

51Testing软件测试网9L/\'\j:G1]]U

+LP`|c v,X-v D0

2.

;d c|MM6w'G1zM0

wrk51Testing软件测试网LCU9S1i4c0J

相对于ab来说最大的优点是「支持多线程」,51Testing软件测试网z!V K Sf#z"^r

这样更容易发挥多核CPU的能力,从而更容易测试出系统的极限能力51Testing软件测试网Te4F6}M@

51Testing软件测试网1a*A{F)sE

q&V k.}u_0

其典型用法如下: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^C7u A(p051Testing软件测试网io!rE H {4~3t"bMV


%xZH+J^(T0

@.B lan{%X0

如果顺着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,y U*n0

51Testing软件测试网 ~~zl"Z*PU1wT
51Testing软件测试网ECYn(Dap6u

通过参数「H」传递一个自定义的Connection请求头来关闭长链接。

s ^T @A@4p3~%}0

此外,wrk支持自定义脚本编程,不过相对较复杂51Testing软件测试网6M K_3Kb(bh vl H

51Testing软件测试网+O5Pl Ru4fI;n#O

{Ss,kON-q0


vB\.Q2])I `*Y051Testing软件测试网C T LtA

3.

I"@WLV#M0Q0

locust

PoY(t8jKf0

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

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

3o P-|!n'?'URy g j0

51Testing软件测试网1rH+eG l6uX

z C?cHh0


CjB[V _i051Testing软件测试网jzi&U4k2E

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

m iu0B s%q,T0

51Testing软件测试网*\K*d$lA
51Testing软件测试网 H$A9gSXR A4Yci;e8u

51Testing软件测试网;K6{um_Yb

/LK4H|A,o$V(O)C0


T:L_$THdd!m|0

@4bB/H#CGr@(| \0

/

-pJ Et D0


;~S}_)UJI(n0

;P!TP9d+eJj0

除了abwrklocust等压力测试工具之外,还有很多其它选择,其中比较有代表性的是 GoReplay  TcpCopy

JN:Ea*h7D(^$l0

可以拷贝线上服务器的真实流量并转发到测试服务器上去,用真实流量来测试,如此得到的数据无疑是更可信的。

5g&A\"n2]n;NS0

不过它们的用法更复杂51Testing软件测试网:s9JTR'k VYK,eE2T

51Testing软件测试网*p6S$]B-g/g'y H

/DnI^/uLW(MKlx0


Bp4e@BioM7\"Ob051Testing软件测试网 R5\I W.b(F k: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`8v KN |

$x;Q cK7W1T0

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

`)o5_ C E N e,a H"Q0

51Testing软件测试网xUuL!_ f(_
51Testing软件测试网-^8?]ei$R R ]p*eA

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

\#E7DJt6s0

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

.N}:_u.\ X0

51Testing软件测试网X p t+J0_

Ft:GY@1D9p1C u0


D*sf%F}s niG!U\051Testing软件测试网&p&T'HF#tq p

如上,整理自网络51Testing软件测试网7AVH9k;g

51Testing软件测试网c$v(x U-X,Ua P

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

 

评分:0

我来说两句

xuquan

xuquan

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

日历

« 2024-04-30  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

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

RSS订阅

Open Toolbar