
在Apache服务器的套件中,有一个叫做 ab (ApacheBench) 的工具。
ApacheBench 主要是用来测试Apache服务器执行效率用的
ApacheBench 可以针对某个特定的 URL 仿真出连续的联机请求
同时还可以仿真出同时间点数个相同的联机请求,因此利用 ApacheBench 可帮助我们在网站开发期间仿真实际上线可能的情况,利用仿真出来的数据做为调整服务器设定或程序的依据。
参数说明
01 |
bixiaopeng@172-13-3-157 ~$ ab -h |
02 |
Usage: ab [options] [http[s]://]hostname[:port]/path |
04 |
//-n 在测试会话中所执行的请求个数。默认时,仅执行一个请求 |
05 |
-n requests Number of requests to perform |
06 |
//-c 一次产生的请求个数。默认是一次一个。 |
07 |
-c concurrency Number of multiple requests to make |
08 |
//-t 测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。 |
09 |
-t timelimit Seconds to max. wait for responses |
11 |
-b windowsize Size of TCP send/receive buffer, in bytes |
13 |
-p postfile File containing data to POST. Remember also to set -T |
15 |
-u putfile File containing data to PUT. Remember also to set -T |
16 |
//-T POST数据所使用的Content-type头信息。 |
17 |
-T content-type Content-type header for POSTing, eg. |
18 |
'application/x-www-form-urlencoded' |
19 |
Default is 'text/plain' |
20 |
//-v 设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。 |
21 |
-v verbosity How much troubleshooting info to print |
22 |
//-w 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。 |
23 |
-w Print out results in HTML tables |
25 |
-i Use HEAD instead of GET |
26 |
-x attributes String to insert as table attributes |
27 |
-y attributes String to insert as tr attributes |
28 |
-z attributes String to insert as td or th attributes |
29 |
//-C cookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。 |
30 |
-C attribute Add cookie, eg. 'Apache=1234. (repeatable) |
31 |
-H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' |
32 |
Inserted after all normal header lines. (repeatable) |
33 |
-A attribute Add Basic WWW Authentication, the attributes |
34 |
are a colon separated username and password. |
35 |
//-P proxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。 |
36 |
-P attribute Add Basic Proxy Authentication, the attributes |
37 |
are a colon separated username and password. |
38 |
-X proxy:port Proxyserver and port number to use |
39 |
-V Print version number and exit |
40 |
-k Use HTTP KeepAlive feature |
41 |
-d Do not show percentiles served table. |
42 |
-S Do not show confidence estimators and warnings. |
43 |
-g filename Output collected data to gnuplot format file. |
44 |
-e filename Output CSV file with percentages served |
45 |
-r Don't exit on socket receive errors. |
46 |
-h Display usage information (this message) |
47 |
-Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers) |
48 |
-f protocol Specify SSL/TLS protocol (SSL2, SSL3, TLS1, or ALL) |
50 |
//-attributes 设置 属性的字符串. 缺陷程序中有各种静态声明的固定长度的缓冲区。另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。它没有完整地实现 HTTP/1.x; 仅接受某些'预想'的响应格式。 strstr(3)的频繁使用可能会带来性能问题,即, 你可能是在测试ab而不是服务器的性能。 |
举个栗子
参数很多,一般我们用 -c 和 -n 参数就可以了. 例如:
01 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ab -c 10 -n 1000 http://www.wirelessqa.com/?p=143 |
02 |
This is ApacheBench, Version 2.3 <$Revision: 655654 $> |
03 |
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ |
04 |
Licensed to The Apache Software Foundation, http://www.apache.org/ |
07 |
Benchmarking www.wirelessqa.com (be patient) |
08 |
Completed 100 requests |
09 |
Completed 200 requests |
10 |
Completed 300 requests |
11 |
Completed 400 requests |
12 |
Completed 500 requests |
13 |
Completed 600 requests |
14 |
Completed 700 requests |
15 |
Completed 800 requests |
16 |
Completed 900 requests |
17 |
Completed 1000 requests |
18 |
Finished 1000 requests |
24 |
Server Hostname: www.wirelessqa.com |
28 |
Document Path: /?p=143 |
29 |
Document Length: 40865 bytes |
33 |
Time taken for tests: 349.234 seconds |
34 |
Complete requests: 1000 |
36 |
(Connect: 0, Receive: 0, Length: 674, Exceptions: 0) |
38 |
Total transferred: 41114189 bytes |
39 |
HTML transferred: 40889965 bytes |
40 |
Requests per second: 2.86 [#/sec] (mean) |
41 |
Time per request: 3492.343 [ms] (mean) |
42 |
Time per request: 349.234 [ms] (mean, across all concurrent requests) |
43 |
Transfer rate: 114.97 [Kbytes/sec] received |
47 |
min mean[+/-sd] median max |
48 |
Connect: 35 161 401.6 59 3394 |
49 |
Processing: 571 3282 2723.1 2648 28374 |
50 |
Waiting: 309 654 767.3 538 21420 |
51 |
Total: 610 3443 2777.4 2826 28514 |
54 |
Percentage of the requests served within a certain time (ms) |
63 |
100% 28514 (longest request) |
结果:在同一时间有10个访问请求的情况下,完成1000次请求,失败674次,共花时间349.234秒,这个页面每秒平均处理2.86个请求
具体分析
01 |
//-c每次发送10个,-n 共发送1000次请求 |
03 |
bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ab -c 10 -n 1000 http://www.wirelessqa.com/?p=143 |
04 |
This is ApacheBench, Version 2.3 <$Revision: 655654 $> |
05 |
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ |
06 |
Licensed to The Apache Software Foundation, http://www.apache.org/ |
08 |
Benchmarking www.wirelessqa.com (be patient) |
09 |
Completed 100 requests |
10 |
Completed 200 requests |
11 |
Completed 300 requests |
12 |
Completed 400 requests |
13 |
Completed 500 requests |
14 |
Completed 600 requests |
15 |
Completed 700 requests |
16 |
Completed 800 requests |
17 |
Completed 900 requests |
18 |
Completed 1000 requests |
19 |
Finished 1000 requests |
24 |
Server Hostname: www.wirelessqa.com |
29 |
Document Path: /?p=143 |
31 |
Document Length: 40865 bytes |
36 |
Time taken for tests: 349.234 seconds |
38 |
Complete requests: 1000 |
40 |
//Failed requests给出了失败原因统计: |
41 |
//Connect:无法送出请求,目标主机连接失败,要求过程中连线被中断 |
42 |
//Length:回应的内容长度不一致,以content-Length头文件为判断依据 |
43 |
//Exception:发生了无法预期的错误 |
44 |
//备注1:这里分析一下为何失败了674次,从下面的统计数据我们可以看出,失败请求都落在Length上面,原因是被测网页是动态内容,当第一次发出HTTP request与后面发出的HTTP request所响应的html Length是不同大小的(即每次响应的Content-Length大小不一致),所以才会引起Length失败,这里Length是以第一次取得的Content-Length为主,以后得到的Content-Length跟第一次的不一致,就会报Length错误,所以这类Length大小不一的失败在测试动态面面的压力测试中是合理的,可以不用管它。 |
46 |
(Connect: 0, Receive: 0, Length: 674, Exceptions: 0) |
50 |
Total transferred: 41114189 bytes |
52 |
//备注2:单个html文件的大小为40865,共发出1000次请求,40865000跟40889965差不多,所以1000次请求应该已经正确送出,没什么问题 |
53 |
HTML transferred: 40889965 bytes |
54 |
//关键指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值 |
55 |
Requests per second: 2.86 [#/sec] (mean) |
56 |
//关键指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值 |
57 |
Time per request: 3492.343 [ms] (mean) |
58 |
//每个请求实际运行时间的平均值,就是上面的时间 除以并发数 |
59 |
Time per request: 349.234 [ms] (mean, across all concurrent requests) |
62 |
//平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题 |
63 |
Transfer rate: 114.97 [Kbytes/sec] received |
67 |
min mean[+/-sd] median max |
68 |
Connect: 35 161 401.6 59 3394 |
69 |
Processing: 571 3282 2723.1 2648 28374 |
70 |
Waiting: 309 654 767.3 538 21420 |
71 |
Total: 610 3443 2777.4 2826 28514 |
73 |
//整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于2826 毫秒,66% 的用户响应时间小于3636 毫秒,最大的响应时间小于28514毫秒 |
74 |
Percentage of the requests served within a certain time (ms) |
75 |
50% 2826 // 就是有50%的请求都是在2826ms内完成的 |
83 |
100% 28514 (longest request) |
- Gatling新一代压力测试工具,新一代服务器性能测试工具Gatling
Gatling新一代压力测试工具新一代服务器性能测试工具Gatlinghttp://www.infoq.com/cn/articles/new-generation-server-testing-to ...
- 性能测试工具 Web Service 性能测试工具比较
[转自]https://testerhome.com/topics/3003 背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力 ...
- linux常用命令:Linux 文件类型与扩展名
Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...
- linux常用命令:Linux 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- linux常用命令:Linux 文件属性详解
Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令: ls -lih 输出: [root@loc ...
- Linux常用命令汇总 - Linux Shell Cheat Sheet
1. 查看Linux操作系统信息: uname -a cat /proc/version lsb_release -a 2. 设置ls显示的文件夹的颜色(将下面这条目录加在 .bashrc 文件最后) ...
- http_load(基于linux平台的一种性能测试工具)
http_load 是运行在linux操作系统上的命令行测试工具, 用来对网站做压力测试.http_load以并行复用的方式运行,用以测试web服务器的吞吐量和负载.但是它不同于大多数压力测试工具, ...
- linux主机上,UnixBench性能测试工具使用
1,下载 wget http://soft.laozuo.org/scripts/UnixBench5.1.3.tgz [root@VM_0_15_centos test]# [root@VM_0_ ...
- Linux常用命令03
上篇我们写到,如何编辑文件,我们有时候,在编辑的时候,有可能会异常的退出,这样的话, linux会针对这个文件生成一个swp文件,当你下次进入vi模式时,就会提示你一个错误 这样,即使你按enter键 ...
- 菜鸟之路——Linux基础::计算机网络基础,Linux常用系统命令,Linux用户与组权限
最近又重新安排了一下我的计划.准备跟着老男孩的教程继续学习,感觉这一套教程讲的很全面,很详细.比我上一套机器学习好的多了. 他的第一阶段是Python基础,第二阶段是高等数学基础,主要将机器学习和深度 ...
随机推荐
- oracle-linux下挂载"移动硬盘" NTFS类型
环境: ORACLE-LINUX 5.7 全新移动硬盘(未使用过) 移动硬盘空间3T 在默认情况下,Linux系统不支持NTFS分区挂载 1.服务器: A服务器和B服务器为一套ORACLE-RAC,移 ...
- Sales_item
#ifndef SALESITEM_H #define SALESITEM_H // Definition of Sales_item class and related functions goes ...
- iOS多线程编程Part 2/3 - NSOperation
多线程编程Part 1介绍了NSThread以及NSRunLoop,这篇Blog介绍另一种并发编程技术:NSOPeration. NSOperation & NSOperationQueue ...
- Cocos2dx中的四种控件及主要用法
1.控件:即控制对象,控制按钮之类的精灵 2.主要介绍四大类控件: CCControlSlider:进度条 CCControlSwitch:开关 CCScale9Sprite:9妹图(用于缩放) CC ...
- C# ASP .NET WEB方向和WPF方向,我该如何去选择
一个2012年南航毕业学软件的学生,该如何去选择我的职业方向? 2011年11分月份,我被老师介绍在南京珠江路华丽国际大厦工作,开发一个大型国际物流平台,公司的开发人员比较少,设计网站的是高校的老师, ...
- Django 学习笔记之二 基本命令
1.新建一个 django project 在Django安装路径下找到django-admin.py文件,我的路径是在C:\Python27\Lib\site-packages\Django-1.1 ...
- 第三章DOM
1. DOM的概念 D:Document. O:Object.对象可以分为三类, 1. 用户自定义的对象. 2. 内建对象,如Array,Math,Date. 3. 宿主对象,浏览器提供的对象.如wi ...
- BZOJ 3436: 小K的农场 差分约束
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=3436 题解: 裸的差分约束: 1.a>=b+c -> b<=a-c ...
- Mysql创建和删除用户
问题描述: Mysql中创建用户和删除用户 问题解决: (1)查询Mysql当前登录账户 (2)创建用户 方法一: 创建用户赋予用户所有权限: 新创建的用户可以在 ...
- C++文件操作之get/getline
问题描述: C++ 读取写入文件,其中读取文件使用get和getline方式 参考资料: http://simpleease.blog.163.com/blog/stat ...