解释如下:

Server Software
服务器软件软件名称。
Server Hostname
被测服务器的主机名。
Server Port
被测试的Web服务器的监听端口。
SSL/TLS Protocol
仅当使用,才会打印。表示客户端和服务器协商的参数。
Document Path
请求URL.
Document Length
第一次成功返回的的文档大小,如果文档长度在测试的时候发生变化,这个响应会被当作错误,因此如果失败的请求下面有Length类型的错误,可以考虑是否是因为被测的url是动态产生的缘故导致返回长度不一致。
Concurrency Level
测试过程中的并发用户数(并发度)
Time taken for tests
完成测试的时间,从socket第一次连接被创建开始,到最后一个响应被接收为止。
Complete requests
成功响应接收的数量。
Failed requests
失败的请求数。如果这个大于0,会在其后打印额外的一行,说明具体失败的详细分类,分别列出连接失败、读取响应失败,不正确的长度或者异常的请求数。读取响应失败可能是服务器来不及处理这些请求,支持的并发连接太少导致连接被关闭,因此没有返回,导致读取响应失败。不正确的长度有可能是正常的,需要进一步分析。连接失败可能就是被测服务器没有启动。异常可能是返回的结果页面中出现的一些异常。这里不统计非2XX的响应码个数,即非2XX码不统计为失败请求。
Write errors
写入请求错误,一般应该不会出现,这算是ab的错误 (broken pipe).
Non-2xx responses
非2XX码的响应结果,如果所有的响应都是2XX,则不会输出
Keep-Alive requests
保持活跃请求的连接数
Total body sent
如果配置了测试过程要发送的数据包,这表示在测试过程总的发送字节数。如果没有数据包发送,这一行不会显示。
Total transferred
表示所有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度。注意这里不包括HTTP请求数据的长度,仅仅为web服务器流向用户PC的应用层数据总长度。
HTML transferred
表示所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度。
Requests per second
每秒处理的请求数,即QPS,RPS,TPS。 这个值通过计算:完成的请求数/总消耗时间,得出
Time per request
每个请求花费的时间。第一个为用户请求等待时间:总的时间/总的请求书/并发度。
第二个为服务器请求等待时间为吞吐量的倒数,也可以这么统计:用户请求等待时间/Concurrency Level。
第一个是单个用户的服务质量,第二个是服务器整体的服务质量。
从用户角度来说,第一个公式表明压力测试指定的并发度对单个用户访问服务器性能有影响,并发度越小用户请求等待时间越小,性能越好,用户体验越快、越好。
从服务器的角度来说,第二个公式表明,压力测试指定的并发度越大,每秒发送过来的请求数太多,导致服务器进程/线程切换频繁,执行时间变长,用户等待时间变长,性能下降。但是如果并发度越小,则会造成资源浪费(CPU等)。
综合的来说,就是要找到一个合适的并发度,使得单个用户的质量以及服务器的质量达到一个比较平衡的点
Transfer rate
传输速度,公式为 totalread / 1024 / timetaken

Percentage of the requests served within a certain time (ms)

  表示小于某一时间的请求数在全过程中的占比

update 2016年8月10日 16:55:23

Connection Times:下面这里说的靠谱:

http://stackoverflow.com/questions/2820306/definition-of-connect-processing-waiting-in-apache-bench

Connect and Waiting times

The amount of time it took to establish the connection and get the first bits of a response

Processing time

The server response time—i.e., the time it took for the server to process the request and send a reply

Total time

The sum of the Connect and Processing times

I equate this to:

  • Connect time: the amount of time it took for the socket to open
  • Processing time: first byte + transfer
  • Waiting: time till first byte
  • Total: Sum of Connect + Processing

2. 以下貌似更靠谱,可以作为上述的补充:即Waiting时间被包含在Processing时间内。

By looking at the source code we find these timing points:

apr_time_t start,           /* Start of connection */
connect, /* Connected, start writing */
endwrite, /* Request written */
beginread, /* First byte of input */
done; /* Connection closed */

And when request is done some timings are stored as:

        s->starttime = c->start;
s->ctime = ap_max(0, c->connect - c->start);
s->time = ap_max(0, c->done - c->start);
s->waittime = ap_max(0, c->beginread - c->endwrite);

And the 'Processing time' is later calculated as

s->time - s->ctime;

So if we translate this to a timeline:

t1: Start of connection
t2: Connected, start writing
t3: Request written
t4: First byte of input
t5: Connection closed

Then the definitions would be:

Connect:      t1-t2   Most typically the network latency
Processing: t2-t5 Time to receive full response after connection was opened
Waiting: t3-t4 Time-to-first-byte after the request was sent
Total time: t1-t5

update:

  通常所说的吞吐量或者rps/tps/qps 是指服务器的处理能力,因为我们一般所测试的所关心的就是服务器的性能。以下用qps来表示。

    qps是单位时间内处理的请求数,平均响应时间是指服务器的处理时间,所以qps和平均响应时间是互为倒数。

    平均等待时间是从请求发出到获取到完整响应的总时间, 这表示用户端的性能,值是:平均响应时间*并发用户数,表示并发用户数越多,同时发送请求过来的总数越大,服务器处理要排队,就算多进程或者多线程来增加性能也是会有排队的情况,总的来说的计算方法就是如此。

    所以一般测试结果的响应时间是指平均等待时间,是指客户端的响应时间,并不是上面所说的平均响应时间!!!!

    所以为了错误理解,测试时,应该直接说响应时间,或者平均用户等待时间,这个是测试工具统计出来的结果。服务器“平均响应时间”应该是服务器处理平均响应时间,平均处理时间,该值不是一个统计值,是通过计算而来。

【原创】Apache ab结果参数详解的更多相关文章

  1. apache httpd.conf 参数详解

    由于网站需要,需要配置多个虚拟主机,但是apache主机的参数太多,记不住,下面做一下总结 归纳: ServerRoot:apache安装位置 Listen:服务器监听的端口号 LoadModule: ...

  2. 成为Java GC专家(4)—Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响

    下面我们看一下Apache的 MaxClients 参数在Full GC 发生时是如何影响系统的. 大部分开发人员都知道在由于GC发生而导致的”停止世界现象(STW) “(详细请参见Understan ...

  3. Apache之AllowOverride参数详解

    通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里.但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对 ...

  4. apache url rewrite 的RewriteRule参数详解

    apache url rewrite 的RewriteRule参数详解 我们经常会在apache那边对一些url进行一些重写操作,那么就会涉及到很多的重写策略的选择,比如重定向的方式,参数的处理,规则 ...

  5. Nginx gzip参数详解及常见问题(已解决)

    1.Nginx gzip功能 Nginx实现资源压缩的原理是通过ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip,ngx_http_gzip_module是Ng ...

  6. 连接池中的maxIdle,MaxActive,maxWait等参数详解

    转: 连接池中的maxIdle,MaxActive,maxWait等参数详解 2017年06月03日 15:16:22 阿祥小王子 阅读数:6481   版权声明:本文为博主原创文章,未经博主允许不得 ...

  7. [转帖]持久化journalctl日志清空命令查看配置参数详解

    持久化journalctl日志清空命令查看配置参数详解 最近 linux上面部署服务 习惯使用systemd 进行处理 这样最大的好处能够 使用journalctl 进行查看日志信息. 今天清理了下 ...

  8. Nginx主配置参数详解,Nginx配置网站

    1.Niginx主配置文件参数详解 a.上面博客说了在Linux中安装nginx.博文地址为:http://www.cnblogs.com/hanyinglong/p/5102141.html b.当 ...

  9. chattr的常用参数详解

    chattr的常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在实际生产环境中,有的运维工程师不得不和开发和测试打交道,在我们公司最常见的就是部署接口.每天每个人部署的 ...

随机推荐

  1. Web服务的调用

    1.创建服务引用 例如:天气预报 2.在代码添加引用空间 TvProgram.ChinaTVprogramWebService tp = new TvProgram.ChinaTVprogramWeb ...

  2. jQuery源码分析-03构造jQuery对象-源码结构和核心函数

    3. 构造jQuery对象 3.1源码结构 先看看总体结构,再做分解: (function( window, undefined ) { var jQuery = (function() { // 构 ...

  3. JavaScript部分兼容性函数

    1.getElementsByClassName() function getElementsByClassName(node,classname){ if(node.getElementsByCla ...

  4. Java基础-内部类介绍

    java内部类介绍 内部类一共分为4种 成员内部类 静态内部类 方法内部类 匿名内部类 下面我会为大家详细介绍每一个内部类!! 成员内部类 成员内部类就好像是外部类的一个成员属性,也是内部类中最常见的 ...

  5. 从api接口获取数据-okhttp

    首先先介绍下api接口: API:应用程序接口(API:Application Program Interface) 通常用于数据连接,调用函数提供功能等等... 从api接口获取数据有四种方式:Ht ...

  6. 使用mac下Fiddler的替代工具Charles进行手机抓包

    对手机的抓包有两种方式,各有优劣且互补,一般第一种即可,对于不走代理的 App 选择第二种方式 第一种 Fiddler: 利用 Fiddler 抓包,适合大多数走代理的应用, 优点 (1) 无需 ro ...

  7. java遍历HashMap的高效方法

    https://stackoverflow.com/questions/46898/how-do-i-efficiently-iterate-over-each-entry-in-a-java-map

  8. 自定义TableViewCell 的方式实现自定义TableView(带源码)

    转载于:http://www.cnblogs.com/macroxu-1982/archive/2012/08/30/2664121.html 实现的效果 实现过程 Step One 创建 自定义Ta ...

  9. gulp自动化打包及静态文件自动添加版本号

    前端自动化打包发布已是一种常态,尤其在移动端,测试过程中静态资源的缓存是件很头疼的事情,有时候明明处理的bug测试还是存在,其实就是缓存惹的祸,手机不比pc浏览器,清理缓存还是有点麻烦的.所以自动化实 ...

  10. iphone设置fiddler代理测试

    iPhone上配置fiddler为代理方法: 打开IPhone, 找到你的网络连接,打开HTTP代理,输入Fiddler所在机器的IP地址(比如:192.168.1.104) 以及Fiddler的端口 ...