0%

002-使用、参数讲解

摘要:使用ab检测指定地址 处理问题能力。

AB的简介

命令常用参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ab --help
# -n requests Number of requests to perform //本次测试发起的总请求数
# -c concurrency Number of multiple requests to make   //一次产生的请求数(或并发数)
# -t timelimit Seconds to max. wait for responses    //测试所进行的最大秒数,默认没有时间限制。
# -r Don't exit on socket receive errors.    // 抛出异常继续执行测试任务
# -p postfile File containing data to POST  //包含了需要POST的数据的文件,文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt
# -T content-type Content-type header for POSTing
# //POST数据所使用的Content-type头信息,如 -T “application/x-www-form-urlencoded” 。 (配合-p)
# -v verbosity How much troubleshooting info to print
# //设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。
# -C attribute Add cookie, eg. -C “c1=1234,c2=2,c3=3” (repeatable)
# //-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复,用逗号分割。
# 提示:可以借助session实现原理传递 JSESSIONID参数, 实现保持会话的功能,如-C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ 。
# -w Print out results in HTML tables  //以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。

使用

1
ab -c 500 -n 5000 http://jd.com/

说明:发送 5000个请求,每次发送500 个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
ab -c 500 -n 5000 http://jd.com/
# This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
# Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
# Licensed to The Apache Software Foundation, http://www.apache.org/

# Benchmarking jd.com (be patient)
# Completed 500 requests
# Completed 1000 requests
# Completed 1500 requests
# Completed 2000 requests
# Completed 2500 requests
# Completed 3000 requests
# Completed 3500 requests
# Completed 4000 requests
# Completed 4500 requests
# Completed 5000 requests
# Finished 5000 requests


# Server Software: jfe #测试服务器的名字
# Server Hostname: jd.com #请求的URL主机名
# Server Port: 80 #请求端口

# Document Path: / #请求路径
# Document Length: 165 bytes #HTTP响应数据的正文长度

# Concurrency Level: 500 #并发用户数,这是我们设置的参数之一
# Time taken for tests: 14.630 seconds #所有这些请求被处理完成所花费的总时间 单位秒
# Complete requests: 5000 #总请求数量,这是我们设置的参数之一
# Failed requests: 0 #表示失败的请求数量
# Non-2xx responses: 5000
# Total transferred: 1715000 bytes #所有请求的响应数据长度总和。包括每个HTTP响应数据的头信息和正文数据的长度
# HTML transferred: 825000 bytes #所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度
# Requests per second: 341.75 [#/sec] (mean) #吞吐量,计算公式:Complete requests/Time taken for tests 总请求数/处理完成这些请求数所花费的时间
# Time per request: 1463.049 [ms] (mean) #用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发用户数)
# Time per request: 2.926 [ms] (mean, across all concurrent requests) #服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level
# Transfer rate: 114.47 [Kbytes/sec] received #表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量。

# Connection Times (ms) #网络消耗时间,
# min mean[+/-sd] median max
# Connect: 9 242 414.5 138 3513
# Processing: 12 407 801.4 158 11468
# Waiting: 12 276 575.5 147 8130
# Total: 26 649 938.0 320 12727

# Percentage of the requests served within a certain time (ms)
# 50% 320 #50%用户请求在320ms内返回
# 66% 359 #60%用户请求在359ms内返回
# 75% 858
# 80% 1009
# 90% 1431 #这是一个衡量点,主要参看指标
# 95% 2478
# 98% 3963 #98%用户请求在3963ms内返回
# 99% 4664
# 100% 12727 (longest request)

关键指标说明

主要看90% 的请求响应时间

1
2
3
4
5
6
7
8
TPS吞吐量:请求数/请求响应的时间(s) ,即每秒请求数,对应 Request per second一项,tps=13.24 req/s
响应时间:请求发送到接受到请求的时间差,单位为ms,一般看90%的响应时间,此时RT=862ms
并发连接数:每秒服务器端能处理的连接数。并发连接数 = 吞吐量*响应时间,并发连接数=11.4 req
PV:Page View网页的浏览次数,或者点击量
UV:Unique Visitor,一台ip地址为一个访客。00:00-24:00内相同的客户端只被计算一次
峰值QPS:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
峰值机器数:保证机器数量抗住峰值QPS,机器数 = 峰值QPS/单台机器QPS

防重放攻击处理

上述请求没有增加防重放攻击处理,可以尝试请求测试下百度的,

可以看到 发送了100个,失败了99个,做了重放攻击的处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
ab -c 10 -n 100 http://www.baidu.com/
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.baidu.com (be patient).....done

Server Software: BWS/1.1
Server Hostname: www.baidu.com
Server Port: 80

Document Path: /
Document Length: 168409 bytes

Concurrency Level: 10
Time taken for tests: 4.660 seconds
Complete requests: 100
Failed requests: 99
(Connect: 0, Receive: 0, Length: 99, Exceptions: 0)
Total transferred: 16300978 bytes
HTML transferred: 16182926 bytes
Requests per second: 21.46 [#/sec] (mean)
Time per request: 466.012 [ms] (mean)
Time per request: 46.601 [ms] (mean, across all concurrent requests)
Transfer rate: 3415.99 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 7 83 46.2 77 219
Processing: 134 371 76.3 383 775
Waiting: 7 91 40.2 87 205
Total: 141 454 72.9 455 826

Percentage of the requests served within a certain time (ms)
50% 455
66% 477
75% 488
80% 496
90% 509
95% 585
98% 654
99% 826
100% 826 (longest request)

导出报告

ab -c10 -n100 http://www.baidu.com/>report.html

一分也是爱,两分情更浓【还没有人赞赏,支持一下呗】