Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Definition of Connect, Processing, Waiting in apache bench

When I run apache bench I get results like:

Command: abs.exe -v 3 -n 10 -c 1 https://mysite Connection Times (ms)               min  mean[+/-sd] median   max Connect:      203  213   8.1    219     219 Processing:    78  177  88.1    172     359 Waiting:       78  169  84.6    156     344 Total:        281  389  86.7    391     564 

I can't seem to find the definition of Connect, Processing and Waiting. What do those numbers mean?

like image 912
rpatel Avatar asked May 12 '10 15:05

rpatel


People also ask

How Apache bench works?

ApacheBench allows you to configure the number of requests to send, a timeout limit, and request headers. ab will send the requests, wait for a response (up to a user-specified timeout), and output statistics as a report.

What is Apache benchmark tool?

ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving.

What is ApacheBench command line utility?

Apache Bench (ab) is a load testing and benchmarking tool for Hypertext Transfer Protocol (HTTP) server. It can be run from command line and it is very simple to use. A quick load testing output can be obtained in just one minute.


1 Answers

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 
like image 176
kvarnsbacke Avatar answered Sep 19 '22 05:09

kvarnsbacke