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

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

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


l%n4n$^]j IXNj0
轻量级压力测试工具ab,wrk,locust分析&对比(人人可以进行压力测试) 

:p0k/n'WDg:x)]051Testing软件测试网2P.G/@&?1n N Ini

51Testing软件测试网&Rd$UC!A'O
51Testing软件测试网%D)J:yH)o8aJ|i*W3l

51Testing软件测试网Eh7J D"h3|-T

g8WB*I)FPT&dm0

之前介绍了4款压力测试工具 51Testing软件测试网 ?(H;X8l3nYG

http://www.51testing.com/?uid-497177-action-viewspace-itemid-371100051Testing软件测试网:U,Q8C8lZ*j}/K6{3R

51Testing软件测试网+E-~J,A`0?0Q L

|.cW4v&JD0

今天再推荐下两款更强大的51Testing软件测试网 kg-Yb x:hQ-sF

51Testing软件测试网I2E)Y|MJe4_

hkBpsP0ix%Y0


o'IsaoU#X0

}.? qv7S[D2Q0

51Testing软件测试网5b]{,\0Pp dW)T2b

zoQg5n0

1.51Testing软件测试网;G fzF [ \0uc\ w

ab51Testing软件测试网;k*zf D K:t]n"n

是目前最常见的压力测试工具。其典型用法如下:51Testing软件测试网!wJo^3k c`Vi

shell> ab -k -n 1000 -c 10  -t 100 http://www.isTester.com/zhichang/177.html51Testing软件测试网F(\1H pF#^-u QB

其中,参数「c」表示的是并发,51Testing软件测试网'z8Hb/y3Q\"B"D

参数「t」表示的是整个测试持续的时间。51Testing软件测试网6fX#`;KyVf5s

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

;C,~ c(Tpdx0


I%@;Y!q6F3B$c8r5O8i0

3aJ K2Yz*xx0

51Testing软件测试网'?B[\F9^

#e,[e(cR a D+o R0

2.

4G(Dd+Rs2B,`B*kw0

wrk51Testing软件测试网Y2D yi4o

相对于ab来说最大的优点是「支持多线程」,

.v"I"rp'uRM#Le0

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


J@.u` z%O%R\|051Testing软件测试网+v \O(l y

其典型用法如下:

0hIH)xiz0

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

f5FN7nu C OD0

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

Jn6Mp1hI8O'JL!r&_0

51Testing软件测试网3q){%kP N)L;gW'g2K0x
51Testing软件测试网dn:geGm3m

51Testing软件测试网n;t Z)wH-w:??!Y}

K0q/?[9J y"dZ-n0

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

不过这也引出另一个问题,如何用wrk测试短链接?实际上很简单:51Testing软件测试网R-XV:X{ ca

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

ZPS!tjMw)v0

51Testing软件测试网"R5mt+w2y

!iRx?0M+v0k9`0

通过参数「H」传递一个自定义的Connection请求头来关闭长链接。51Testing软件测试网x:pD |'v

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

-X*fl5jcrb.?0


@5?[Qq"D |v|0

9v(N,dnK1n%_0


;| f"`U|Los0

&W&p3Q5X+x0

3.

.ssjY v(Q0

locust

j+dxF)Z|h0v0

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

此外,它还是分布式可扩展的,可以模拟大量用户的访问,由此可以得到更贴近真实环境的测试数据。51Testing软件测试网(Ip)GG6wg AnG

51Testing软件测试网qn&M(Ez2oip1F
51Testing软件测试网(o }H OMD&Y

51Testing软件测试网1| s k'O)Uz

{-F6wh#P;^C]d0

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

%h[4z3Xmm u0

51Testing软件测试网e%V9I,X(O)AYk(l
51Testing软件测试网Q6pEy$Bvc&r IYn

51Testing软件测试网^Sg7HOC)i6LD h0Y@
51Testing软件测试网(q d]SZSP7|


x Ae"MI5u*j0

*lU,uy|+k-K-Tk0

/

k+[#QZe ~0

51Testing软件测试网"EP3~%t)s2b5z;zc ]
51Testing软件测试网WM l"c#G5zJ|X

除了abwrklocust等压力测试工具之外,还有很多其它选择,其中比较有代表性的是 GoReplay  TcpCopy51Testing软件测试网4jp0|"_6A

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

9a+Ui/i5W7W f&xc'_0

不过它们的用法更复杂51Testing软件测试网(Z#@[9E [r#G nx%R

51Testing软件测试网fK;p+R-}`j

i2uc2QY-[^ k7l B0

51Testing软件测试网ax0ok"Xw[XI
51Testing软件测试网m F&c8HRR$~

补充,

D Et!bmi4J];x}6P0

说说压力测试过程中一些注意事项:51Testing软件测试网}i ~7[ I

51Testing软件测试网5Y"T tNF Jn&I]

0^_yO#N5F0

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

\1x6y5y8bD:q0

51Testing软件测试网Ok g,Q9v2KV

[HJz/GF\ x0

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

%|^M&l vERg.c0


w5w+y1k:GN)R0

s3}'Y[[0

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

:i0@7rD L d0

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

H L_1WF?0


5av [1xfe E8y qRE051Testing软件测试网"Bq`"A0Xf


'o;Y$du9xl}:d~3s051Testing软件测试网2Q9A+By L5k(n,M%N:|

如上,整理自网络

3qi cft h0
~R,h"i9ahE9?0

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

 

评分:0

我来说两句

xuquan

xuquan

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

日历

« 2024-04-12  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

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

RSS订阅

Open Toolbar